From 8e053c6747164c19a4d17a0863e1b12782b507bf Mon Sep 17 00:00:00 2001
From: Billy Lynch <1844673+wlynch@users.noreply.github.com>
Date: Thu, 11 Jan 2024 13:36:09 -0500
Subject: [PATCH 01/41] Export f64ce7e6d3b76a94461057a23401451ea34dace0
Export: f64ce7e6d3b76a94461057a23401451ea34dace0
---
.chainguard/source.yaml | 17 -
.github/chainguard/mono-readonly.sts.yaml | 10 -
.github/chainguard/mono.sts.yaml | 12 -
.github/workflows/test.yaml | 41 -
.github/workflows/verify.yaml | 79 -
.gitignore | 29 -
.golangci.yml | 35 -
CODEOWNERS | 1 +
LICENSE | 201 -
README.md | 52 +-
auth/aws/e2e_test.go | 160 -
auth/aws/generate.go | 62 -
auth/aws/verify.go | 119 -
auth/aws/verify_options.go | 83 -
auth/context.go | 47 -
auth/file.go | 62 -
auth/login/html.go | 71 -
auth/login/login.go | 89 -
auth/login/login_test.go | 46 -
auth/login/options.go | 181 -
auth/login/options_test.go | 114 -
auth/login/orgcheck.go | 43 -
auth/login/orgcheck_test.go | 75 -
auth/login/server.go | 110 -
auth/login/server_test.go | 49 -
auth/oidc.go | 159 -
auth/token.go | 31 -
auth/token/token.go | 181 -
auth/token/token_test.go | 515 --
civil/civil.go | 332 --
civil/civil_test.go | 547 ---
events/extensions.go | 43 -
events/generator/generator.go | 32 -
events/occurrence.go | 41 -
events/receiver/receiver.go | 66 -
events/registry/registry.go | 97 -
events/webhook.go | 14 -
go.mod | 76 -
go.sum | 308 --
hack/tools.go | 17 -
hack/update-codegen.sh | 19 -
hack/update-deps.sh | 14 -
hack/verify-golangci-lint.sh | 50 -
proto/annotations/auth.pb.go | 342 --
proto/annotations/auth.proto | 49 -
proto/annotations/doc.go | 11 -
proto/annotations/events.pb.go | 258 -
proto/annotations/events.proto | 29 -
proto/capabilities/capabilities.go | 189 -
proto/capabilities/capabilities.pb.go | 669 ---
proto/capabilities/capabilities.proto | 139 -
proto/capabilities/capabilities_test.go | 139 -
proto/capabilities/doc.go | 9 -
proto/capabilities/roles.go | 162 -
proto/google/api/annotations.proto | 31 -
proto/google/api/field_behavior.proto | 90 -
proto/google/api/http.proto | 375 --
proto/google/api/httpbody.proto | 81 -
proto/google/api/resource.proto | 239 -
.../advisory/v1/advisory.platform.pb.go | 1936 --------
.../advisory/v1/advisory.platform.pb.gw.go | 251 -
.../advisory/v1/advisory.platform.proto | 233 -
.../advisory/v1/advisory.platform_grpc.pb.go | 146 -
proto/platform/advisory/v1/clients.go | 81 -
proto/platform/advisory/v1/doc.go | 10 -
proto/platform/advisory/v1/test/advisory.go | 70 -
proto/platform/auth/v1/auth.platform.event.go | 21 -
proto/platform/auth/v1/auth.platform.pb.go | 505 --
proto/platform/auth/v1/auth.platform.pb.gw.go | 232 -
proto/platform/auth/v1/auth.platform.proto | 114 -
.../platform/auth/v1/auth.platform_grpc.pb.go | 147 -
proto/platform/auth/v1/doc.go | 10 -
proto/platform/auth/v1/test/mock_auth.go | 75 -
proto/platform/clients.go | 195 -
proto/platform/common/v1/doc.go | 9 -
proto/platform/common/v1/uidp.platform.pb.go | 184 -
proto/platform/common/v1/uidp.platform.proto | 19 -
proto/platform/events/v1/doc.go | 12 -
.../events/v1/identities.platform.event.go | 16 -
.../events/v1/identities.platform.pb.go | 416 --
.../events/v1/identities.platform.pb.gw.go | 247 -
.../events/v1/identities.platform.proto | 97 -
.../events/v1/identities.platform_grpc.pb.go | 146 -
.../events/v1/subscriptions.platform.event.go | 45 -
.../events/v1/subscriptions.platform.pb.go | 510 --
.../events/v1/subscriptions.platform.pb.gw.go | 384 --
.../events/v1/subscriptions.platform.proto | 92 -
.../v1/subscriptions.platform_grpc.pb.go | 184 -
.../v1/account_associations.platform.event.go | 41 -
.../v1/account_associations.platform.pb.go | 1120 -----
.../v1/account_associations.platform.pb.gw.go | 618 ---
.../v1/account_associations.platform.proto | 192 -
.../account_associations.platform_grpc.pb.go | 259 -
proto/platform/iam/v1/clients.go | 156 -
proto/platform/iam/v1/doc.go | 17 -
proto/platform/iam/v1/group.platform.event.go | 38 -
proto/platform/iam/v1/group.platform.pb.go | 570 ---
proto/platform/iam/v1/group.platform.pb.gw.go | 501 --
proto/platform/iam/v1/group.platform.proto | 127 -
.../platform/iam/v1/group.platform_grpc.pb.go | 221 -
.../iam/v1/group_invites.platform.event.go | 48 -
.../iam/v1/group_invites.platform.pb.go | 981 ----
.../iam/v1/group_invites.platform.pb.gw.go | 467 --
.../iam/v1/group_invites.platform.proto | 174 -
.../iam/v1/group_invites.platform_grpc.pb.go | 231 -
.../iam/v1/identity.platform.event.go | 40 -
proto/platform/iam/v1/identity.platform.pb.go | 1357 ------
.../iam/v1/identity.platform.pb.gw.go | 586 ---
proto/platform/iam/v1/identity.platform.proto | 251 -
.../iam/v1/identity.platform_grpc.pb.go | 258 -
.../v1/identity_providers.platform.event.go | 68 -
.../iam/v1/identity_providers.platform.pb.go | 693 ---
.../v1/identity_providers.platform.pb.gw.go | 501 --
.../iam/v1/identity_providers.platform.proto | 149 -
.../v1/identity_providers.platform_grpc.pb.go | 221 -
proto/platform/iam/v1/role.platform.event.go | 23 -
proto/platform/iam/v1/role.platform.pb.go | 540 ---
proto/platform/iam/v1/role.platform.pb.gw.go | 501 --
proto/platform/iam/v1/role.platform.proto | 100 -
.../platform/iam/v1/role.platform_grpc.pb.go | 221 -
.../iam/v1/role_binding.platform.event.go | 38 -
.../iam/v1/role_binding.platform.pb.go | 705 ---
.../iam/v1/role_binding.platform.pb.gw.go | 501 --
.../iam/v1/role_binding.platform.proto | 134 -
.../iam/v1/role_binding.platform_grpc.pb.go | 221 -
.../iam/v1/test/mock_account_accociations.go | 103 -
proto/platform/iam/v1/test/mock_client.go | 67 -
.../iam/v1/test/mock_deprecatedidentities.go | 42 -
proto/platform/iam/v1/test/mock_groups.go | 105 -
proto/platform/iam/v1/test/mock_identities.go | 102 -
.../iam/v1/test/mock_identity_providers.go | 86 -
proto/platform/iam/v1/test/mock_invites.go | 86 -
.../iam/v1/test/mock_role_bindings.go | 86 -
proto/platform/iam/v1/test/mock_roles.go | 86 -
.../iam/v1/test/mock_subscriptions.go | 86 -
proto/platform/oidc/v1/clients.go | 101 -
proto/platform/oidc/v1/doc.go | 10 -
proto/platform/oidc/v1/oidc.platform.pb.go | 459 --
proto/platform/oidc/v1/oidc.platform.pb.gw.go | 336 --
proto/platform/oidc/v1/oidc.platform.proto | 64 -
.../platform/oidc/v1/oidc.platform_grpc.pb.go | 146 -
proto/platform/oidc/v1/test/mock_client.go | 26 -
proto/platform/oidc/v1/test/mock_sts.go | 53 -
proto/platform/ping/v1/clients.go | 80 -
proto/platform/ping/v1/doc.go | 10 -
proto/platform/ping/v1/ping.platform.pb.go | 216 -
proto/platform/ping/v1/ping.platform.pb.gw.go | 148 -
proto/platform/ping/v1/ping.platform.proto | 29 -
.../platform/ping/v1/ping.platform_grpc.pb.go | 109 -
proto/platform/ping/v1/test/ping.go | 52 -
proto/platform/registry/v1/clients.go | 81 -
proto/platform/registry/v1/doc.go | 10 -
.../registry/v1/registry.platform.event.go | 21 -
.../registry/v1/registry.platform.pb.go | 4240 -----------------
.../registry/v1/registry.platform.pb.gw.go | 1659 -------
.../registry/v1/registry.platform.proto | 572 ---
.../registry/v1/registry.platform_grpc.pb.go | 592 ---
proto/platform/registry/v1/test/registry.go | 263 -
.../tenant/v1/attestation.platform.pb.go | 389 --
.../tenant/v1/attestation.platform.pb.gw.go | 164 -
.../tenant/v1/attestation.platform.proto | 63 -
.../tenant/v1/attestation.platform_grpc.pb.go | 109 -
proto/platform/tenant/v1/clients.go | 97 -
proto/platform/tenant/v1/doc.go | 13 -
proto/platform/tenant/v1/sbom.platform.pb.go | 1058 ----
.../platform/tenant/v1/sbom.platform.pb.gw.go | 164 -
proto/platform/tenant/v1/sbom.platform.proto | 131 -
.../tenant/v1/sbom.platform_grpc.pb.go | 109 -
.../tenant/v1/signature.platform.pb.go | 731 ---
.../tenant/v1/signature.platform.proto | 110 -
.../tenant/v1/signature.platform_grpc.pb.go | 109 -
.../tenant/v1/test/mock_attestations.go | 38 -
proto/platform/tenant/v1/test/mock_client.go | 41 -
proto/platform/tenant/v1/test/mock_sboms.go | 38 -
.../tenant/v1/test/mock_signatures.go | 38 -
proto/platform/tenant/v1/test/mock_vuln.go | 38 -
proto/platform/tenant/v1/vuln.platform.pb.go | 1138 -----
.../platform/tenant/v1/vuln.platform.pb.gw.go | 166 -
proto/platform/tenant/v1/vuln.platform.proto | 162 -
.../tenant/v1/vuln.platform_grpc.pb.go | 109 -
proto/platform/test/mock_clients.go | 86 -
proto/platform/test/mock_server.go | 45 -
sts/sts.go | 314 --
sts/sts_test.go | 424 --
sts/tokensource.go | 44 -
uidp/ancestry.go | 75 -
uidp/ancestry_test.go | 177 -
uidp/doc.go | 8 -
uidp/uid.go | 65 -
uidp/uid_test.go | 20 -
validation/aws_account.go | 30 -
validation/aws_account_test.go | 32 -
validation/bundles.go | 30 -
validation/bundles_test.go | 37 -
validation/name.go | 28 -
validation/name_test.go | 34 -
validation/readme.go | 66 -
validation/readme_test.go | 75 -
validation/tag.go | 29 -
validation/tag_test.go | 40 -
200 files changed, 21 insertions(+), 43177 deletions(-)
delete mode 100644 .chainguard/source.yaml
delete mode 100644 .github/chainguard/mono-readonly.sts.yaml
delete mode 100644 .github/chainguard/mono.sts.yaml
delete mode 100644 .github/workflows/test.yaml
delete mode 100644 .github/workflows/verify.yaml
delete mode 100644 .gitignore
delete mode 100644 .golangci.yml
create mode 100644 CODEOWNERS
delete mode 100644 LICENSE
delete mode 100644 auth/aws/e2e_test.go
delete mode 100644 auth/aws/generate.go
delete mode 100644 auth/aws/verify.go
delete mode 100644 auth/aws/verify_options.go
delete mode 100644 auth/context.go
delete mode 100644 auth/file.go
delete mode 100644 auth/login/html.go
delete mode 100644 auth/login/login.go
delete mode 100644 auth/login/login_test.go
delete mode 100644 auth/login/options.go
delete mode 100644 auth/login/options_test.go
delete mode 100644 auth/login/orgcheck.go
delete mode 100644 auth/login/orgcheck_test.go
delete mode 100644 auth/login/server.go
delete mode 100644 auth/login/server_test.go
delete mode 100644 auth/oidc.go
delete mode 100644 auth/token.go
delete mode 100644 auth/token/token.go
delete mode 100644 auth/token/token_test.go
delete mode 100644 civil/civil.go
delete mode 100644 civil/civil_test.go
delete mode 100644 events/extensions.go
delete mode 100644 events/generator/generator.go
delete mode 100644 events/occurrence.go
delete mode 100644 events/receiver/receiver.go
delete mode 100644 events/registry/registry.go
delete mode 100644 events/webhook.go
delete mode 100644 go.mod
delete mode 100644 go.sum
delete mode 100644 hack/tools.go
delete mode 100755 hack/update-codegen.sh
delete mode 100755 hack/update-deps.sh
delete mode 100755 hack/verify-golangci-lint.sh
delete mode 100644 proto/annotations/auth.pb.go
delete mode 100644 proto/annotations/auth.proto
delete mode 100644 proto/annotations/doc.go
delete mode 100644 proto/annotations/events.pb.go
delete mode 100644 proto/annotations/events.proto
delete mode 100644 proto/capabilities/capabilities.go
delete mode 100644 proto/capabilities/capabilities.pb.go
delete mode 100644 proto/capabilities/capabilities.proto
delete mode 100644 proto/capabilities/capabilities_test.go
delete mode 100644 proto/capabilities/doc.go
delete mode 100644 proto/capabilities/roles.go
delete mode 100644 proto/google/api/annotations.proto
delete mode 100644 proto/google/api/field_behavior.proto
delete mode 100644 proto/google/api/http.proto
delete mode 100644 proto/google/api/httpbody.proto
delete mode 100644 proto/google/api/resource.proto
delete mode 100644 proto/platform/advisory/v1/advisory.platform.pb.go
delete mode 100644 proto/platform/advisory/v1/advisory.platform.pb.gw.go
delete mode 100644 proto/platform/advisory/v1/advisory.platform.proto
delete mode 100644 proto/platform/advisory/v1/advisory.platform_grpc.pb.go
delete mode 100644 proto/platform/advisory/v1/clients.go
delete mode 100644 proto/platform/advisory/v1/doc.go
delete mode 100644 proto/platform/advisory/v1/test/advisory.go
delete mode 100644 proto/platform/auth/v1/auth.platform.event.go
delete mode 100644 proto/platform/auth/v1/auth.platform.pb.go
delete mode 100644 proto/platform/auth/v1/auth.platform.pb.gw.go
delete mode 100644 proto/platform/auth/v1/auth.platform.proto
delete mode 100644 proto/platform/auth/v1/auth.platform_grpc.pb.go
delete mode 100644 proto/platform/auth/v1/doc.go
delete mode 100644 proto/platform/auth/v1/test/mock_auth.go
delete mode 100644 proto/platform/clients.go
delete mode 100644 proto/platform/common/v1/doc.go
delete mode 100644 proto/platform/common/v1/uidp.platform.pb.go
delete mode 100644 proto/platform/common/v1/uidp.platform.proto
delete mode 100644 proto/platform/events/v1/doc.go
delete mode 100644 proto/platform/events/v1/identities.platform.event.go
delete mode 100644 proto/platform/events/v1/identities.platform.pb.go
delete mode 100644 proto/platform/events/v1/identities.platform.pb.gw.go
delete mode 100644 proto/platform/events/v1/identities.platform.proto
delete mode 100644 proto/platform/events/v1/identities.platform_grpc.pb.go
delete mode 100644 proto/platform/events/v1/subscriptions.platform.event.go
delete mode 100644 proto/platform/events/v1/subscriptions.platform.pb.go
delete mode 100644 proto/platform/events/v1/subscriptions.platform.pb.gw.go
delete mode 100644 proto/platform/events/v1/subscriptions.platform.proto
delete mode 100644 proto/platform/events/v1/subscriptions.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/account_associations.platform.event.go
delete mode 100644 proto/platform/iam/v1/account_associations.platform.pb.go
delete mode 100644 proto/platform/iam/v1/account_associations.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/account_associations.platform.proto
delete mode 100644 proto/platform/iam/v1/account_associations.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/clients.go
delete mode 100644 proto/platform/iam/v1/doc.go
delete mode 100644 proto/platform/iam/v1/group.platform.event.go
delete mode 100644 proto/platform/iam/v1/group.platform.pb.go
delete mode 100644 proto/platform/iam/v1/group.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/group.platform.proto
delete mode 100644 proto/platform/iam/v1/group.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/group_invites.platform.event.go
delete mode 100644 proto/platform/iam/v1/group_invites.platform.pb.go
delete mode 100644 proto/platform/iam/v1/group_invites.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/group_invites.platform.proto
delete mode 100644 proto/platform/iam/v1/group_invites.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/identity.platform.event.go
delete mode 100644 proto/platform/iam/v1/identity.platform.pb.go
delete mode 100644 proto/platform/iam/v1/identity.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/identity.platform.proto
delete mode 100644 proto/platform/iam/v1/identity.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/identity_providers.platform.event.go
delete mode 100644 proto/platform/iam/v1/identity_providers.platform.pb.go
delete mode 100644 proto/platform/iam/v1/identity_providers.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/identity_providers.platform.proto
delete mode 100644 proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/role.platform.event.go
delete mode 100644 proto/platform/iam/v1/role.platform.pb.go
delete mode 100644 proto/platform/iam/v1/role.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/role.platform.proto
delete mode 100644 proto/platform/iam/v1/role.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/role_binding.platform.event.go
delete mode 100644 proto/platform/iam/v1/role_binding.platform.pb.go
delete mode 100644 proto/platform/iam/v1/role_binding.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/role_binding.platform.proto
delete mode 100644 proto/platform/iam/v1/role_binding.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/test/mock_account_accociations.go
delete mode 100644 proto/platform/iam/v1/test/mock_client.go
delete mode 100644 proto/platform/iam/v1/test/mock_deprecatedidentities.go
delete mode 100644 proto/platform/iam/v1/test/mock_groups.go
delete mode 100644 proto/platform/iam/v1/test/mock_identities.go
delete mode 100644 proto/platform/iam/v1/test/mock_identity_providers.go
delete mode 100644 proto/platform/iam/v1/test/mock_invites.go
delete mode 100644 proto/platform/iam/v1/test/mock_role_bindings.go
delete mode 100644 proto/platform/iam/v1/test/mock_roles.go
delete mode 100644 proto/platform/iam/v1/test/mock_subscriptions.go
delete mode 100644 proto/platform/oidc/v1/clients.go
delete mode 100644 proto/platform/oidc/v1/doc.go
delete mode 100644 proto/platform/oidc/v1/oidc.platform.pb.go
delete mode 100644 proto/platform/oidc/v1/oidc.platform.pb.gw.go
delete mode 100644 proto/platform/oidc/v1/oidc.platform.proto
delete mode 100644 proto/platform/oidc/v1/oidc.platform_grpc.pb.go
delete mode 100644 proto/platform/oidc/v1/test/mock_client.go
delete mode 100644 proto/platform/oidc/v1/test/mock_sts.go
delete mode 100644 proto/platform/ping/v1/clients.go
delete mode 100644 proto/platform/ping/v1/doc.go
delete mode 100644 proto/platform/ping/v1/ping.platform.pb.go
delete mode 100644 proto/platform/ping/v1/ping.platform.pb.gw.go
delete mode 100644 proto/platform/ping/v1/ping.platform.proto
delete mode 100644 proto/platform/ping/v1/ping.platform_grpc.pb.go
delete mode 100644 proto/platform/ping/v1/test/ping.go
delete mode 100644 proto/platform/registry/v1/clients.go
delete mode 100644 proto/platform/registry/v1/doc.go
delete mode 100644 proto/platform/registry/v1/registry.platform.event.go
delete mode 100644 proto/platform/registry/v1/registry.platform.pb.go
delete mode 100644 proto/platform/registry/v1/registry.platform.pb.gw.go
delete mode 100644 proto/platform/registry/v1/registry.platform.proto
delete mode 100644 proto/platform/registry/v1/registry.platform_grpc.pb.go
delete mode 100644 proto/platform/registry/v1/test/registry.go
delete mode 100644 proto/platform/tenant/v1/attestation.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/attestation.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/attestation.platform.proto
delete mode 100644 proto/platform/tenant/v1/attestation.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/clients.go
delete mode 100644 proto/platform/tenant/v1/doc.go
delete mode 100644 proto/platform/tenant/v1/sbom.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/sbom.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/sbom.platform.proto
delete mode 100644 proto/platform/tenant/v1/sbom.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/signature.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/signature.platform.proto
delete mode 100644 proto/platform/tenant/v1/signature.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/test/mock_attestations.go
delete mode 100644 proto/platform/tenant/v1/test/mock_client.go
delete mode 100644 proto/platform/tenant/v1/test/mock_sboms.go
delete mode 100644 proto/platform/tenant/v1/test/mock_signatures.go
delete mode 100644 proto/platform/tenant/v1/test/mock_vuln.go
delete mode 100644 proto/platform/tenant/v1/vuln.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/vuln.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/vuln.platform.proto
delete mode 100644 proto/platform/tenant/v1/vuln.platform_grpc.pb.go
delete mode 100644 proto/platform/test/mock_clients.go
delete mode 100644 proto/platform/test/mock_server.go
delete mode 100644 sts/sts.go
delete mode 100644 sts/sts_test.go
delete mode 100644 sts/tokensource.go
delete mode 100644 uidp/ancestry.go
delete mode 100644 uidp/ancestry_test.go
delete mode 100644 uidp/doc.go
delete mode 100644 uidp/uid.go
delete mode 100644 uidp/uid_test.go
delete mode 100644 validation/aws_account.go
delete mode 100644 validation/aws_account_test.go
delete mode 100644 validation/bundles.go
delete mode 100644 validation/bundles_test.go
delete mode 100644 validation/name.go
delete mode 100644 validation/name_test.go
delete mode 100644 validation/readme.go
delete mode 100644 validation/readme_test.go
delete mode 100644 validation/tag.go
delete mode 100644 validation/tag_test.go
diff --git a/.chainguard/source.yaml b/.chainguard/source.yaml
deleted file mode 100644
index 8a710d38..00000000
--- a/.chainguard/source.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2023 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-spec:
- authorities:
- - keyless:
- url: https://fulcio.sigstore.dev
- identities:
- - subjectRegExp: .+@chainguard.dev$
- issuer: https://accounts.google.com
- - subject: https://github.com/chainguard-dev/mono/.github/workflows/export-sdk.yaml@refs/heads/main
- issuer: https://token.actions.githubusercontent.com
- ctlog:
- url: https://rekor.sigstore.dev
- - key:
- # Allow commits signed by Github (merge commits)
- kms: https://github.com/web-flow.gpg
diff --git a/.github/chainguard/mono-readonly.sts.yaml b/.github/chainguard/mono-readonly.sts.yaml
deleted file mode 100644
index e3702ffb..00000000
--- a/.github/chainguard/mono-readonly.sts.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2024 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-issuer: https://token.actions.githubusercontent.com
-subject_pattern: repo:chainguard-dev/mono:pull_request
-claim_pattern:
- job_workflow_ref: chainguard-dev/mono/.github/workflows/export-sdk.yaml@.*
-
-permissions:
- contents: read
diff --git a/.github/chainguard/mono.sts.yaml b/.github/chainguard/mono.sts.yaml
deleted file mode 100644
index a2efdb5a..00000000
--- a/.github/chainguard/mono.sts.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2024 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-issuer: https://token.actions.githubusercontent.com
-subject_pattern: repo:chainguard-dev/mono:ref:refs/heads/main
-claim_pattern:
- job_workflow_ref: chainguard-dev/mono/.github/workflows/(export|publish)-sdk.yaml@refs/heads/main
-
-permissions:
- contents: write
- pull_requests: write
- workflows: write
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
deleted file mode 100644
index 115918e2..00000000
--- a/.github/workflows/test.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2023 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-name: Test
-
-on:
- pull_request:
- branches: [ 'main', 'release-*' ]
- push:
- branches: [ 'main', 'release-*' ]
-
-jobs:
-
- test:
- runs-on: ubuntu-latest
- steps:
- - name: Check out code onto GOPATH
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
-
- # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds
- - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
- with:
- # In order:
- # * Module download cache
- # * Build cache (Linux)
- path: |
- ~/go/pkg/mod
- ~/.cache/go-build
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-
-
- - name: Set up Go
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
- with:
- go-version-file: './go.mod'
- check-latest: true
-
- - run: |
- # Exclude running unit tests against third_party repos.
- go test -race $(go list ./... | grep -v third_party/)
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
deleted file mode 100644
index 33939348..00000000
--- a/.github/workflows/verify.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2023 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-name: Verify
-
-on:
- pull_request:
- branches: [ 'main', 'release-*' ]
- push:
- branches: [ 'main', 'release-*' ]
-
-jobs:
-
- verify:
- name: Verify Codegen
- runs-on: ubuntu-latest
-
- env:
- GOPATH: ${{ github.workspace }}
-
- steps:
- - name: Check out code
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- with:
- path: ./src/github.com/${{ github.repository }}
- fetch-depth: 0
-
- - name: Set up Go
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
- with:
- go-version-file: './src/github.com/${{ github.repository }}/go.mod'
- check-latest: true
-
- # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds
- - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
- with:
- # In order:
- # * Module download cache
- # * Build cache (Linux)
- path: |
- ~/go/pkg/mod
- ~/.cache/go-build
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-
-
- #- name: Install protoc
- # uses: arduino/setup-protoc@v1.1.2
- # arduino/setup-protoc@v1.1.2 can't install latest releases of protoc due
- # to protoc changing their version naming scheme:
- # https://github.com/arduino/setup-protoc/issues/33
- - name: Install Protoc
- run: |
- cd "$(mktemp -d)"
- wget -O protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip
- unzip protoc.zip -d .
- chmod +x ./bin/protoc
- echo "$(pwd)/bin" >> "$GITHUB_PATH"
-
- - name: Install Dependencies
- run: |
- cd $(mktemp -d)
- go install github.com/google/go-licenses@ceb292363ec84358c9a276ef23aa0de893e59b84
- go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
- go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
- go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
- go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
-
- - name: Update Codegen
- shell: bash
- working-directory: ./src/github.com/${{ github.repository }}
- run: |
- ./hack/update-codegen.sh
-
- - name: Verify
- uses: chainguard-dev/actions/nodiff@main
- with:
- path: ./src/github.com/${{ github.repository }}
- fixup-command: "./hack/update-codegen.sh"
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 1590cdc0..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-# Vim swap files
-*.swp
-
-**/third_party/VENDOR-LICENSE/LICENSE
-**/third_party/VENDOR-LICENSE/vendor/golang.org/x/
-**/third_party/VENDOR-LICENSE/golang.org/x/
-
-**/.idea/
-
-**/.vscode/
-
-**/.DS_Store
-
-# Generated by CI
-/**/gha-creds*.json
-
-# Generated openapi schemas
-/proto/**/*.swagger.json
-/proto/**/*.swagger.yaml
-
-# SQLite
-*.db
-
-# Local dev
-**/.ko.yaml.orig
-**/.ko.yaml.tmp
-
-# Ignore generated credentials from google-github-actions/auth
-gha-creds-*.json
diff --git a/.golangci.yml b/.golangci.yml
deleted file mode 100644
index 41279d73..00000000
--- a/.golangci.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2023 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-linters:
- enable:
- - asciicheck
- - unused
- - errcheck
- - errorlint
- - gofmt
- - goimports
- - gosec
- - gocritic
- - importas
- - prealloc
- - revive
- - misspell
- - stylecheck
- - tparallel
- - unconvert
- - unparam
- - whitespace
-output:
- uniq-by-line: false
-issues:
- exclude-rules:
- - path: _test\.go
- linters:
- - errcheck
- - gosec
- max-issues-per-linter: 0
- max-same-issues: 0
-run:
- issues-exit-code: 1
- timeout: 10m
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 00000000..4066d21e
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1 @@
+@cmdpdx
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 261eeb9e..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
diff --git a/README.md b/README.md
index e650c9b0..fe1318c4 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,22 @@
# SDK
-This repository contains the public [gRPC](https://grpc.io/) protos supporting
-our services and packages to ease integration with the Chainguard platform.
-
-## Updating `*.proto` files
-
-After updating a `*.proto` you'll need to update the corresponding generated go
-code.
-
-```shell
-./hack/update-codegen.sh
-```
-
-### Prerequisites
-
-Install `protoc`: https://grpc.io/docs/protoc-installation/
-
-Example for MacOS:
-
-```shell
-brew install protobuf
-```
-
-We currently require `protoc` v5.26.1.
-
-Install `protoc` codegen dependencies:
-
-```shell
-go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
-go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
-go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
-go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
-```
+### The SDK has moved to a public repo at [github.com/chainguard-dev/sdk](https://github.com/chainguard-dev/sdk)!
+
+For guidance working with the SDK, post questions to
+[#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST) in Slack.
+
+## Recommended workflow for making SDK changes
+
+The workflow will be different since changes to SDK are not immediately available in `mono`. This recommended workflow
+is still a work in progress and subject to change as we discover new pain points in the process.
+
+1. Determine if your change is appropriate for `chainguard.dev/sdk` (i.e. is it okay to be public), or would
+`mono/api-internal` be a better fit?
+2. Make changes to your local copy of `chainguard.dev/sdk`. If you are developing something in `mono` that relies
+on those changes, it may be helpful to add a temporary `replace chainguard.dev/sdk => [path to your local SDK repo]`
+in the relevant `go.mod` for faster iteration.
+3. Push `chainguard.dev/sdk` changes and open a PR in [github.com/chainguard-dev/sdk](https://github.com/chainguard-dev/sdk)
+and post in [#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST).
+or tag relevant reviewers.
+4. Cut a new release, update necessary `go.mod` of dependencies. The release cadence for SDK is still TBD, at the moment
+ad hoc releases as necessary are fine. If you're unsure, ask in [#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST).
diff --git a/auth/aws/e2e_test.go b/auth/aws/e2e_test.go
deleted file mode 100644
index 98482b01..00000000
--- a/auth/aws/e2e_test.go
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package aws
-
-import (
- "context"
- "fmt"
- "net/http"
- "net/http/httptest"
- "testing"
- "time"
-
- "github.com/aws/aws-sdk-go-v2/aws"
- "github.com/google/go-cmp/cmp"
- "k8s.io/apimachinery/pkg/util/sets"
-)
-
-func epochTime() time.Time {
- return time.Unix(0, 0)
-}
-
-func TestGenerateToken(t *testing.T) {
- timeNow = epochTime
-
- var creds = aws.Credentials{AccessKeyID: "AKID", SecretAccessKey: "SECRET", SessionToken: "SESSION"}
- validToken, err := GenerateToken(context.Background(), creds, "aud", "identity")
- if err != nil {
- t.Fatal(err)
- }
-
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- switch r.URL.Path {
- case "/good":
- fmt.Fprintf(w, `{
- "GetCallerIdentityResponse": {
- "GetCallerIdentityResult": {
- "UserId": "userid",
- "Account": "123456789012",
- "Arn": "arn"
- }
- }
- }`)
- case "/reject":
- w.WriteHeader(http.StatusBadRequest)
- fmt.Fprintf(w, "go away")
- }
- }))
-
- tests := map[string]struct {
- audience string
- identity string
- timestamp time.Time
- stsURL string
- token string
- wantErr error
- }{
- "happy path": {
- audience: "aud",
- identity: "identity",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: validToken,
- wantErr: nil,
- },
- "audience mismatch": {
- audience: "bad audience",
- identity: "identity",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: validToken,
- wantErr: ErrInvalidAudience,
- },
- "identity mismatch": {
- audience: "aud",
- identity: "identity is wrong",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: validToken,
- wantErr: ErrInvalidIdentity,
- },
- "expired token": {
- audience: "aud",
- identity: "identity",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0).Add(16 * time.Minute),
- token: validToken,
- wantErr: ErrTokenExpired,
- },
- "no identity set": {
- audience: "aud",
- identity: "",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: validToken,
- wantErr: ErrInvalidVerificationConfiguration,
- },
- "bad token encoding": {
- audience: "aud",
- identity: "identity",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: "no-base64-encoded",
- wantErr: ErrInvalidEncoding,
- },
- "base64 encoded but not even an http request": {
- audience: "aud",
- identity: "identity",
- stsURL: ts.URL + "/good",
- timestamp: time.Unix(0, 0),
- token: "bm90IGFuIGh0dHAgcmVxdWVzdA==", // echo -n "not an http request" | base64
- wantErr: ErrInvalidEncoding,
- },
- "bad sts URL": {
- audience: "aud",
- identity: "identity",
- timestamp: time.Unix(0, 0),
- token: validToken,
- stsURL: "\t\n",
- wantErr: ErrInvalidVerificationConfiguration,
- },
- "rejected token": {
- audience: "aud",
- identity: "identity",
- timestamp: time.Unix(0, 0),
- token: validToken,
- stsURL: ts.URL + "/reject",
- wantErr: ErrTokenRejected,
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- gotClaims, err := VerifyToken(
- context.Background(),
- test.token,
- WithAudience(sets.New(test.audience)),
- WithIdentity(test.identity),
- withSTSURL(test.stsURL),
- withTimestamp(test.timestamp))
- if err != test.wantErr { //nolint:errorlint
- t.Errorf("received error %T and wanted %T", err, test.wantErr)
- }
- if err != nil {
- return
- }
-
- expectedClaims := &VerifiedClaims{
- UserID: "userid",
- Account: "123456789012",
- Arn: "arn",
- }
- if diff := cmp.Diff(gotClaims, expectedClaims); diff != "" {
- t.Errorf("got different claims than expected diff = %s", diff)
- }
- })
- }
-}
diff --git a/auth/aws/generate.go b/auth/aws/generate.go
deleted file mode 100644
index 5bfcef03..00000000
--- a/auth/aws/generate.go
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package aws
-
-import (
- "bytes"
- "context"
- "encoding/base64"
- "fmt"
- "net/http"
- "time"
-
- "github.com/aws/aws-sdk-go-v2/aws"
- v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
-)
-
-var timeNow = time.Now
-
-const (
- audHeader = `Chainguard-Audience`
- idHeader = `Chainguard-Identity`
-)
-
-// GenerateToken creates token using the supplied AWS credentials that can prove the user's AWS identity. Audience and identity are
-// the Chainguard STS url (e.g https://issuer.enforce.dev) and the UID of the Chainguard assumable identity to assume via STS.
-func GenerateToken(ctx context.Context, creds aws.Credentials, audience, identity string) (string, error) {
- req, err := http.NewRequest("POST", "https://sts.amazonaws.com", nil)
- if err != nil {
- return "", fmt.Errorf("failed to create new HTTP request: %w", err)
- }
-
- req.URL.Path = "/"
- req.URL.RawQuery = "Action=GetCallerIdentity&Version=2011-06-15"
- req.Header.Add("Accept", "application/json")
- req.Header.Add(audHeader, audience)
- req.Header.Add(idHeader, identity)
-
- const (
- // hashInit is the sha256 hash of an empty buffer, hex encoded.
- hashInit = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` //nolint:gosec
-
- // STS service details for signing
- svc = `sts`
- region = `us-east-1`
- )
-
- err = v4.NewSigner().SignHTTP(ctx, creds, req, hashInit, svc, region, timeNow())
- if err != nil {
- return "", fmt.Errorf("failed to sign GetCallerIdentity request with AWS credentials: %w", err)
- }
-
- var b bytes.Buffer
- err = req.Write(&b)
- if err != nil {
- return "", fmt.Errorf("failed to serialize GetCallerIdentity HTTP request to buffer: %w", err)
- }
-
- return base64.URLEncoding.EncodeToString(b.Bytes()), nil
-}
diff --git a/auth/aws/verify.go b/auth/aws/verify.go
deleted file mode 100644
index 2abca3ee..00000000
--- a/auth/aws/verify.go
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package aws
-
-import (
- "bufio"
- "bytes"
- "context"
- "encoding/base64"
- "encoding/json"
- "errors"
- "fmt"
- "io"
- "net/http"
- "net/url"
- "time"
-
- "github.com/chainguard-dev/clog"
-)
-
-var (
- ErrTokenRejected = errors.New("token rejected by AWS STS endpoint")
- ErrTokenExpired = errors.New("token expired")
- ErrInvalidAudience = errors.New("audience header in token does not match expected audience")
- ErrInvalidIdentity = errors.New("identity header in token does not match expected identity")
- ErrInvalidEncoding = errors.New("invalid token encoding")
- ErrInvalidVerificationConfiguration = errors.New("verifcation was incorrectly configured")
-)
-
-type VerifiedClaims struct {
- UserID string `json:"UserId"`
- Arn string `json:"Arn"`
- Account string `json:"Account"`
-}
-
-func VerifyToken(ctx context.Context, token string, opts ...VerifyOption) (*VerifiedClaims, error) {
- conf, err := newConfigFromOptions(opts...)
- if err != nil {
- clog.FromContext(ctx).Errorf("invalid verification configuration: %v", err)
- return nil, ErrInvalidVerificationConfiguration
- }
-
- var req *http.Request
- {
- decoded, err := base64.URLEncoding.DecodeString(token)
- if err != nil {
- return nil, ErrInvalidEncoding
- }
- r := bufio.NewReader(bytes.NewReader(decoded))
- req, err = http.ReadRequest(r)
- if err != nil {
- return nil, ErrInvalidEncoding
- }
-
- // NB: If RequestURI is set on an outbound http.Request the client will error. This field
- // is set because of how we serial and then parse the request so we need to unset it here.
- req.RequestURI = ""
- req.URL, err = url.Parse(conf.stsURL)
- if err != nil {
- clog.FromContext(ctx).With("sts_url", conf.stsURL).Errorf("invalid verification configuration. invalid sts url: %v", err)
- return nil, ErrInvalidVerificationConfiguration
- }
- }
-
- if got := req.Header.Get(audHeader); !conf.allowedAudiences.Has(got) {
- clog.FromContext(ctx).With("received", got).Warn("verification failed with audience mismatch")
- return nil, ErrInvalidAudience
- }
- if got := req.Header.Get(idHeader); got != conf.identity {
- clog.FromContext(ctx).With("wanted", conf.identity, "received", got).Warn("verification failed with identity mismatch")
- return nil, ErrInvalidIdentity
- }
-
- timestamp, err := time.Parse("20060102T150405Z", req.Header.Get("X-Amz-Date"))
- if err != nil {
- clog.FromContext(ctx).Warnf("verification failed because of a poorly formatted x-amz-date header format: %v", err)
- return nil, ErrInvalidEncoding
- }
- expiry, now := timestamp.Add(15*time.Minute), conf.time()
- if expiry.Before(now) {
- // According to AWS docs
- // > The signed portions (using AWS Signatures) of requests are valid within 15 minutes of the timestamp in the request.
- // If the signature timestamp is already older than 15 minutes the token is expired and we reject it.
- // c.f https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
- clog.FromContext(ctx).Error("verification failed because of expired token")
- return nil, ErrTokenExpired
- }
-
- resp, err := http.DefaultClient.Do(req.WithContext(ctx))
- if err != nil {
- clog.FromContext(ctx).Errorf("verification failed because of failure to make AWS STS request: %v", err)
- return nil, fmt.Errorf("failed to reach AWS STS endpoint: %w", err)
- }
- defer resp.Body.Close()
-
- if resp.StatusCode != http.StatusOK {
- body, err := io.ReadAll(resp.Body)
- if err != nil {
- return nil, fmt.Errorf("failed to read response body from AWS STS endpoint: %w", err)
- }
- clog.FromContext(ctx).With("response_code", resp.StatusCode, "response", string(body)).Error("verification failed because it was rejected by AWS STS endpoint")
- return nil, ErrTokenRejected
- }
-
- var response struct {
- GetCallerIdentityResponse struct {
- GetCallerIdentityResult VerifiedClaims
- }
- }
- if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
- clog.FromContext(ctx).Errorf("verification failed because json parsing err in response: %v", err)
- return nil, fmt.Errorf("failed to parse json from AWS STS response %w", err)
- }
-
- return &response.GetCallerIdentityResponse.GetCallerIdentityResult, nil
-}
diff --git a/auth/aws/verify_options.go b/auth/aws/verify_options.go
deleted file mode 100644
index 2646bafd..00000000
--- a/auth/aws/verify_options.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package aws
-
-import (
- "errors"
- "time"
-
- "k8s.io/apimachinery/pkg/util/sets"
-)
-
-type verifyConf struct {
- allowedAudiences sets.Set[string]
- identity string
-
- time func() time.Time
- stsURL string
-}
-
-func newDefaultConfig() *verifyConf {
- return &verifyConf{
- allowedAudiences: sets.New("https://issuer.enforce.dev"),
- stsURL: "https://sts.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15",
- time: time.Now,
- }
-}
-
-func newConfigFromOptions(opts ...VerifyOption) (*verifyConf, error) {
- conf := newDefaultConfig()
- for _, o := range opts {
- o(conf)
- }
- if err := conf.valid(); err != nil {
- return nil, err
- }
- return conf, nil
-}
-
-func (c *verifyConf) valid() error {
- if c.identity == "" {
- return errors.New("must specify assume identity to verify")
- }
- if c.allowedAudiences.Len() == 0 {
- return errors.New("must specify audience to verify")
- }
- if c.stsURL == "" {
- return errors.New("must specify AWS STS endpoint url")
- }
- return nil
-}
-
-type VerifyOption func(*verifyConf)
-
-func WithAudience(aud sets.Set[string]) VerifyOption {
- return func(c *verifyConf) {
- c.allowedAudiences = aud
- }
-}
-
-func WithIdentity(id string) VerifyOption {
- return func(c *verifyConf) {
- c.identity = id
- }
-}
-
-// Unexported testing options
-
-func withSTSURL(url string) VerifyOption {
- return func(c *verifyConf) {
- c.stsURL = url
- }
-}
-
-func withTimestamp(t time.Time) VerifyOption {
- return func(c *verifyConf) {
- c.time = func() time.Time {
- return t
- }
- }
-}
diff --git a/auth/context.go b/auth/context.go
deleted file mode 100644
index c5d909ee..00000000
--- a/auth/context.go
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package auth
-
-import (
- "context"
-
- "google.golang.org/grpc/credentials"
-)
-
-type contextAuth struct {
- secure bool
-}
-
-// The key to associate token with context.
-type tokenKey struct{}
-
-var _ credentials.PerRPCCredentials = (*contextAuth)(nil)
-
-// GetRequestMetadata implements credentials.PerRPCCredentials
-func (ta *contextAuth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { //nolint: revive
- return map[string]string{
- "Authorization": GetToken(ctx),
- }, nil
-}
-
-// RequireTransportSecurity implements credentials.PerRPCCredentials
-func (ta *contextAuth) RequireTransportSecurity() bool {
- return ta.secure
-}
-
-// WithToken associates the token with the returned context.
-func WithToken(ctx context.Context, authz string) context.Context {
- return context.WithValue(ctx, tokenKey{}, authz)
-}
-
-// GetToken fetches the token from the context.
-func GetToken(ctx context.Context) string {
- v := ctx.Value(tokenKey{})
- if v == nil {
- return ""
- }
- return v.(string)
-}
diff --git a/auth/file.go b/auth/file.go
deleted file mode 100644
index bfa848dc..00000000
--- a/auth/file.go
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package auth
-
-import (
- "context"
- "os"
- "sync"
- "time"
-
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc/credentials"
-)
-
-type fileAuth struct {
- file string
- secure bool
-
- m sync.Mutex
- lastUpdated time.Time
- cache []byte
-}
-
-var _ credentials.PerRPCCredentials = (*fileAuth)(nil)
-
-// GetRequestMetadata implements credentials.PerRPCCredentials
-func (fa *fileAuth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { //nolint: revive
- fa.m.Lock()
- defer fa.m.Unlock()
-
- // According to https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- // The kubelet proactively rotates the token if it is older than 80% of
- // its total TTL, or if the token is older than 24 hours.
- // We use the minimum lifetime (10m) so the nearest a token should get to
- // expiration before it is refreshed is 2 minutes. Use 1 minute to give
- // us wiggle room, but we should have 2 minutes to validate the token.
- if time.Since(fa.lastUpdated) < time.Minute {
- clog.FromContext(ctx).Infof("Using cached token, last refreshed %v", fa.lastUpdated)
- return map[string]string{
- "Authorization": string(fa.cache),
- }, nil
- }
-
- b, err := os.ReadFile(fa.file)
- if err != nil {
- return nil, err
- }
- fa.cache = b
- fa.lastUpdated = time.Now()
- clog.FromContext(ctx).Info("Using fresh token.")
- return map[string]string{
- "Authorization": string(b),
- }, nil
-}
-
-// RequireTransportSecurity implements credentials.PerRPCCredentials
-func (fa *fileAuth) RequireTransportSecurity() bool {
- return fa.secure
-}
diff --git a/auth/login/html.go b/auth/login/html.go
deleted file mode 100644
index 0659f5dc..00000000
--- a/auth/login/html.go
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-var (
- HTMLAuthSuccessful = `
-
-
- Chainguard Authentication
-
-
-
-
-
-
-
-
-
- Chainguard
- authentication successful!
-
-
- You may now close
- this page or visit:
- this page.
-
-
-
-
-
-`
-)
diff --git a/auth/login/login.go b/auth/login/login.go
deleted file mode 100644
index 67411409..00000000
--- a/auth/login/login.go
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package login implements client login functionality shared between various
-// clients
-package login
-
-import (
- "context"
- "fmt"
- "net/url"
- "os"
- "strings"
-
- "github.com/pkg/browser"
-)
-
-// OpenBrowserError wraps the error returned from browser.OpenURL,
-// since this can take a few different forms depending on the OS.
-type OpenBrowserError struct {
- err error
-}
-
-func (e *OpenBrowserError) Error() string { return "failed to open browser: " + e.err.Error() }
-func (e *OpenBrowserError) Unwrap() error { return e.err }
-
-func Login(ctx context.Context, opts ...Option) (token string, refreshToken string, err error) {
- conf, err := newConfigFromOptions(opts...)
- if err != nil {
- return "", "", err
- }
-
- // Start new token server on a random available localhost port
- s, err := newServer(ctx)
- if err != nil {
- return "", "", err
- }
- defer s.Close()
-
- params := make(url.Values)
- params.Set("exit", "redirect")
- params.Set("redirect", s.URL())
- if conf.IDP != "" {
- params.Set("idp_id", conf.IDP)
- }
- if conf.OrgName != "" {
- // NB: we reuse the idp_id query param for verified organization SSO
- params.Set("idp_id", conf.OrgName)
- }
- if conf.InviteCode != "" {
- params.Set("invite", conf.InviteCode)
- }
- if conf.ClientID != "" {
- params.Set("client_id", conf.ClientID)
- }
- if conf.Auth0Connection != "" {
- params.Set("connection", conf.Auth0Connection)
- }
- if conf.SkipRegistration {
- params.Set("skip_registration", "true")
- }
- if conf.Identity != "" {
- params.Set("identity", conf.Identity)
- }
- if len(conf.Audience) > 0 {
- params.Set("audience", strings.Join(conf.Audience, ","))
- }
- if conf.IncludeUpstreamToken {
- params.Set("include_upstream_token", "true")
- }
- if conf.CreateRefreshToken {
- params.Set("create_refresh_token", "true")
- }
- u := fmt.Sprintf("%s/oauth?%s", conf.Issuer, params.Encode())
- fmt.Fprintf(os.Stderr, "Opening browser to %s\n", u)
- err = browser.OpenURL(u)
- if err != nil {
- return "", "", &OpenBrowserError{err}
- }
-
- token, err = s.Token()
- if err != nil {
- return "", "", err
- }
- refreshToken = s.RefreshToken()
- return token, refreshToken, nil
-}
diff --git a/auth/login/login_test.go b/auth/login/login_test.go
deleted file mode 100644
index 2a4b92f3..00000000
--- a/auth/login/login_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright 2024 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "errors"
- "testing"
-)
-
-func TestOpenBrowserErrorAs(t *testing.T) {
- tests := map[string]struct {
- err error
- want bool
- }{
- "nil": {
- err: nil,
- want: false,
- },
- "success": {
- err: &OpenBrowserError{
- errors.New("unit test"),
- },
- want: true,
- },
- "failure": {
- err: errors.New("unit test"),
- want: false,
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- var want *OpenBrowserError
- got := errors.As(test.err, &want)
- if got != test.want {
- t.Errorf("As() expected %t, got %t", test.want, got)
- }
- if got {
- t.Log(want.Error())
- }
- })
- }
-}
diff --git a/auth/login/options.go b/auth/login/options.go
deleted file mode 100644
index 843e96df..00000000
--- a/auth/login/options.go
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "errors"
- "fmt"
-
- "chainguard.dev/sdk/uidp"
-)
-
-type config struct {
- // Audience is the intended audience for the token, if different than what is
- // configured for the oauth handler.
- Audience []string
-
- // URL of Chainguard Enforce OIDC Issuer. Defaults to https://issuer.enforce.dev
- Issuer string
-
- // Identity is the exact UIDP of an assumable identity to authenticate as.
- Identity string
-
- // UIDP of specific customer identity provider to log in with
- IDP string
-
- // OrgName is the name of an organization with custom identity provider configured to use for authentication
- OrgName string
-
- // Optional invite code to consume on login
- InviteCode string
-
- // ClientID is the ID of the oauth2 provider
- ClientID string
-
- // Auth0Connection is the connection parameter sent to Auth0
- // to preselect the social connection.
- //
- // See docs for details: https://auth0.com/docs/api/authentication#social
- Auth0Connection string
-
- // SkipRegistration tells the issuer not to attempt to register
- // if the account is not found.
- SkipRegistration bool
-
- // IncludeUpstreamToken tells the issuer to include the encrypted upstream token
- // in the Chainguard token
- IncludeUpstreamToken bool
-
- // CreateRefreshToken tells the issuer to create a refresh token
- CreateRefreshToken bool
-}
-
-const defaultIssuer = `https://issuer.enforce.dev`
-
-func newDefaultConfig() *config {
- return &config{
- Issuer: defaultIssuer,
- }
-}
-
-func newConfigFromOptions(opts ...Option) (*config, error) {
- conf := newDefaultConfig()
- for _, o := range opts {
- o(conf)
- }
- if err := conf.valid(); err != nil {
- return nil, err
- }
- return conf, nil
-}
-
-func (c *config) valid() error {
- if c.ClientID != "" && (c.IDP != "" || c.OrgName != "") {
- return errors.New("must specify one of client id or custom identity provider")
- }
- if c.IDP != "" && c.OrgName != "" {
- return errors.New("must specify one of identity provider id or organization name")
- }
- if c.ClientID == "" && c.IDP == "" && c.OrgName == "" {
- return errors.New("must select one of client id, custom identity provider and organization name")
- }
-
- switch {
- case c.IDP != "":
- if !uidp.Valid(c.IDP) {
- return errors.New("invalid ID for identity provider")
- }
- if c.Auth0Connection != "" {
- return errors.New("identity provider ID and Auth0 connection are mutually exclusive")
- }
- return nil
-
- case c.OrgName != "":
- if c.Auth0Connection != "" {
- return errors.New("organization name and Auth0 connection are mutually exclusive")
- }
-
- verified, err := orgCheck(c.OrgName, c.Issuer)
- if err != nil {
- return fmt.Errorf("error checking if organization is verified: %w", err)
- }
- if !verified {
- return errors.New("organization is not verified must use identity provider ID to log in")
- }
-
- return nil
-
- default:
- return nil
- }
-}
-
-type Option func(opt *config)
-
-func WithAudience(aud []string) Option {
- return func(c *config) {
- c.Audience = aud
- }
-}
-
-func WithClientID(id string) Option {
- return func(c *config) {
- c.ClientID = id
- }
-}
-func WithIssuer(issuer string) Option {
- return func(c *config) {
- c.Issuer = issuer
- }
-}
-
-func WithIdentity(identity string) Option {
- return func(c *config) {
- c.Identity = identity
- }
-}
-
-func WithIdentityProvider(idp string) Option {
- return func(c *config) {
- c.IDP = idp
- }
-}
-
-func WithOrgName(org string) Option {
- return func(c *config) {
- c.OrgName = org
- }
-}
-
-func WithInviteCode(inviteCode string) Option {
- return func(c *config) {
- c.InviteCode = inviteCode
- }
-}
-
-func WithAuth0Connection(conn string) Option {
- return func(c *config) {
- c.Auth0Connection = conn
- }
-}
-
-func WithSkipRegistration() Option {
- return func(c *config) {
- c.SkipRegistration = true
- }
-}
-
-func WithIncludeUpstreamToken() Option {
- return func(c *config) {
- c.IncludeUpstreamToken = true
- }
-}
-
-func WithCreateRefreshToken() Option {
- return func(c *config) {
- c.CreateRefreshToken = true
- }
-}
diff --git a/auth/login/options_test.go b/auth/login/options_test.go
deleted file mode 100644
index 63c4671c..00000000
--- a/auth/login/options_test.go
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "net/http/httptest"
- "testing"
-
- "chainguard.dev/sdk/uidp"
- "github.com/google/go-cmp/cmp"
-)
-
-func TestConfFromOptions(t *testing.T) {
- id := uidp.NewUID().String()
-
- testIssuer := httptest.NewServer(expectedBehavior("chainguard.dev"))
-
- tests := map[string]struct {
- Options []Option
- WantConfig *config
- WantErr bool
- }{
- "Happy path": {
- Options: []Option{
- WithIssuer("https://example.com"),
- WithIdentityProvider(id),
- WithInviteCode("foo"),
- },
- WantConfig: &config{
- Issuer: "https://example.com",
- IDP: id,
- InviteCode: "foo",
- },
- },
- "Bad IDP ID": {
- Options: []Option{
- WithIssuer("https://example.com"),
- WithIdentityProvider("imnotanidp"),
- },
- WantErr: true,
- },
- "Org name": {
- Options: []Option{
- WithIssuer(testIssuer.URL),
- WithOrgName("chainguard.dev"),
- },
- WantConfig: &config{
- Issuer: testIssuer.URL,
- OrgName: "chainguard.dev",
- },
- },
- "Cannot specify both identity provider and org name": {
- Options: []Option{
- WithOrgName("chainguard.dev"),
- WithIdentityProvider("foo"),
- },
- WantErr: true,
- },
- "Cannot specify both client id and org name": {
- Options: []Option{
- WithOrgName("chainguard.dev"),
- WithClientID("auth0"),
- },
- WantErr: true,
- },
- "No issuer defaults to prod issuer": {
- Options: []Option{
- WithIdentityProvider(id),
- },
- WantConfig: &config{
- Issuer: defaultIssuer,
- IDP: id,
- },
- },
- "No idp ID or client ID set errors": {
- Options: nil,
- WantErr: true,
- },
- "IDP and ClientID both set errors": {
- Options: []Option{
- WithIdentityProvider(id),
- WithClientID("client_id"),
- },
- WantErr: true,
- },
- "IDP and Auth0Connection both set errors": {
- Options: []Option{
- WithIdentityProvider(id),
- WithAuth0Connection("github"),
- },
- WantErr: true,
- },
- }
-
- for test, data := range tests {
- t.Run(test, func(t *testing.T) {
- gotConfig, err := newConfigFromOptions(data.Options...)
- if err != nil && !data.WantErr {
- t.Errorf("got unexpected error %#v", err)
- return
- } else if err == nil && data.WantErr {
- t.Error("expected error and got none")
- return
- }
-
- if diff := cmp.Diff(gotConfig, data.WantConfig); diff != "" {
- t.Errorf("diff in expected config = %s", diff)
- }
- })
- }
-}
diff --git a/auth/login/orgcheck.go b/auth/login/orgcheck.go
deleted file mode 100644
index 86f67286..00000000
--- a/auth/login/orgcheck.go
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "encoding/json"
- "net/http"
- "net/url"
-)
-
-func orgCheck(name string, issuer string) (verified bool, err error) {
- var endpoint string
- {
- u, err := url.Parse(issuer)
- if err != nil {
- return false, err
- }
- u.Path = `/orgcheck`
-
- query := make(url.Values, 1)
- query.Add("name", name)
- u.RawQuery = query.Encode()
-
- endpoint = u.String()
- }
-
- //#nosec G107 HTTP request with variable input not a risk here. The result
- // is from a public endpoint and only used as a convenience to fail early on
- // misconfigured organizations
- resp, err := http.Get(endpoint)
- if err != nil {
- return false, err
- }
-
- err = json.NewDecoder(resp.Body).Decode(&verified)
- if err != nil {
- return false, err
- }
- return verified, nil
-}
diff --git a/auth/login/orgcheck_test.go b/auth/login/orgcheck_test.go
deleted file mode 100644
index e56e684a..00000000
--- a/auth/login/orgcheck_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "fmt"
- "net/http"
- "net/http/httptest"
- "testing"
-)
-
-func expectedBehavior(verifiedOrg string) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- if r.URL.Path != "/orgcheck" {
- w.WriteHeader(http.StatusNotFound)
- return
- }
-
- name := r.URL.Query().Get("name")
- if name == "" {
- w.WriteHeader(http.StatusBadRequest)
- fmt.Fprintf(w, "name query param required")
- return
- }
- fmt.Fprint(w, name == verifiedOrg)
- }
-}
-
-func brokenIssuer(w http.ResponseWriter, _ *http.Request) {
- w.WriteHeader(http.StatusInternalServerError)
-}
-
-func TestOrgCheck(t *testing.T) {
- tests := map[string]struct {
- org string
- handler http.HandlerFunc
- want bool
- wantErr bool
- }{
- "verified": {
- org: "example.com",
- handler: expectedBehavior("example.com"),
- want: true,
- },
- "not verified": {
- org: "not.example.com",
- handler: expectedBehavior("example.com"),
- want: false,
- },
- "broken issuer should error": {
- org: "example.com",
- handler: brokenIssuer,
- wantErr: true,
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- s := httptest.NewServer(test.handler)
- defer s.Close()
-
- got, err := orgCheck(test.org, s.URL)
- if (err != nil) != test.wantErr {
- t.Errorf("err == %s and wantErr = %v", err, test.wantErr)
- return
- }
- if got != test.want {
- t.Errorf("got = %v and want = %v", got, test.want)
- }
- })
- }
-}
diff --git a/auth/login/server.go b/auth/login/server.go
deleted file mode 100644
index d3c3e939..00000000
--- a/auth/login/server.go
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package login implements client login functionality shared between various
-// clients
-package login
-
-import (
- "context"
- "errors"
- "fmt"
- "net"
- "net/http"
-)
-
-type server struct {
- ctx context.Context
-
- callbackURL string
- rootURL string
-
- token chan string
-
- refreshToken string
-
- l net.Listener
-}
-
-func newServer(ctx context.Context) (*server, error) {
- s := new(server)
-
- {
- // NB: port 0 here means select a random port
- listener, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- return nil, err
- }
- port := listener.Addr().(*net.TCPAddr).Port
-
- s.token = make(chan string, 1)
-
- s.callbackURL = fmt.Sprintf("http://localhost:%d/callback?token=true", port)
- s.rootURL = fmt.Sprintf("http://localhost:%d/", port)
- s.l = listener
- s.ctx = ctx
- }
-
- // nolint:all
- go http.Serve(s.l, s)
-
- return s, nil
-}
-
-func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- switch r.URL.Path {
- case "/":
- fmt.Fprint(w, HTMLAuthSuccessful)
- close(s.token)
- return
-
- case "/callback":
- token := r.URL.Query().Get("token")
- if token == "" {
- fmt.Fprint(w, "Account not found, registration required.")
- close(s.token)
- return
- }
- s.refreshToken = r.URL.Query().Get("refresh_token")
- s.token <- token
- // We redirect to `/` to print a "successful auth" message and strip
- // the token out of the URI
- http.Redirect(w, r, s.rootURL, http.StatusPermanentRedirect)
-
- default:
- http.NotFound(w, r)
- }
-}
-
-func (s *server) URL() string {
- return s.callbackURL
-}
-
-// Token blocks until a token has been received
-func (s *server) Token() (string, error) {
- select {
- case <-s.ctx.Done():
- return "", s.ctx.Err()
- case t, ok := <-s.token:
- if !ok {
- // Didn't receive token from redirect to callback
- return "", errors.New("login failed")
- }
-
- // We've received a token, but need to block until the success page has been written to
- // the browser
- <-s.token
- return t, nil
- }
-}
-
-// RefreshToken is called after Token(), so we don't need any blocking here.
-func (s *server) RefreshToken() string {
- return s.refreshToken
-}
-
-func (s *server) Close() error {
- return s.l.Close()
-}
diff --git a/auth/login/server_test.go b/auth/login/server_test.go
deleted file mode 100644
index 20b8e454..00000000
--- a/auth/login/server_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package login
-
-import (
- "context"
- "errors"
- "net/http"
- "strings"
- "testing"
- "time"
-)
-
-func TestServerTimeout(t *testing.T) {
- ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)
- defer cancel()
- s, err := newServer(ctx)
- if err != nil {
- t.Fatal(err)
- }
-
- _, err = s.Token()
- if !errors.Is(err, context.DeadlineExceeded) {
- t.Errorf("expect timeout error getting token")
- }
-}
-
-func TestServerHappyPath(t *testing.T) {
- s, err := newServer(context.Background())
- if err != nil {
- t.Fatal(err)
- }
-
- callback := strings.ReplaceAll(s.URL(), "token=true", "token=foo")
- http.Get(callback)
-
- token, err := s.Token()
- if err != nil {
- t.Errorf("expected no error, got %#v", err)
- }
- if token != "foo" {
- t.Errorf("expected token == foo, but got token == %q", token)
- }
-
- s.Close()
-}
diff --git a/auth/oidc.go b/auth/oidc.go
deleted file mode 100644
index 295e1dc6..00000000
--- a/auth/oidc.go
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package auth
-
-import (
- "context"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "os"
- "strings"
- "time"
-
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc/credentials"
-)
-
-// NewFromFile attempts to create a new credentials.PerRPCCredentials based on the provided file.
-// Returns nil if not found.
-func NewFromFile(ctx context.Context, path string, requireTransportSecurity bool) credentials.PerRPCCredentials {
- if _, err := os.Stat(path); !os.IsNotExist(err) {
- clog.FromContext(ctx).Infof("Using OIDC token from %s to authenticate requests.", path)
- return &fileAuth{
- file: path,
- secure: requireTransportSecurity,
- }
- }
- return nil
-}
-
-// NewFromToken attempts to create a new credentials.PerRPCCredentials based on provided OIDC token.
-func NewFromToken(_ context.Context, token string, requireTransportSecurity bool) credentials.PerRPCCredentials {
- return &tokenAuth{
- token: token,
- secure: requireTransportSecurity,
- }
-}
-
-// NewFromContext creates a new credentials.PerRPCCredentials based on a token stored in context.
-// This allows callers to provide a token for each RPC.
-func NewFromContext(_ context.Context, requireTransportSecurity bool) credentials.PerRPCCredentials {
- return &contextAuth{
- secure: requireTransportSecurity,
- }
-}
-
-// NormalizeIssuer massages an issuer string into a canonical form, such as
-// attaching a scheme when certain "special" vendors omit them.
-func NormalizeIssuer(issuer string) string {
- // Similar to go-oidc, allow Google accounts to be missing scheme:
- // https://github.com/coreos/go-oidc/blob/26c5037/oidc/verify.go#L231
- if issuer == "accounts.google.com" {
- issuer = "https://accounts.google.com"
- }
- return issuer
-}
-
-type Actor struct {
- Audience string `json:"aud"`
- Issuer string `json:"iss"`
- Subject string `json:"sub"`
-}
-
-func decodeToken(token string) ([]byte, error) {
- parts := strings.Split(token, ".")
- if len(parts) < 2 {
- return nil, fmt.Errorf("oidc: malformed jwt, expected 3 parts got %d", len(parts))
- }
- raw, err := base64.RawURLEncoding.DecodeString(parts[1])
- if err != nil {
- return nil, fmt.Errorf("oidc: malformed jwt payload: %w", err)
- }
- return raw, nil
-}
-
-func ExtractActor(token string) (*Actor, error) {
- raw, err := decodeToken(token)
- if err != nil {
- return nil, err
- }
-
- var payload struct {
- Actor Actor `json:"act"`
- }
- if err := json.Unmarshal(raw, &payload); err != nil {
- return nil, fmt.Errorf("oidc: failed to unmarshal actor: %w", err)
- }
- return &payload.Actor, nil
-}
-
-func ExtractEmail(token string) (email string, verified bool, err error) {
- raw, err := decodeToken(token)
- if err != nil {
- return "", false, err
- }
-
- var payload struct {
- Email string `json:"email"`
- EmailVerified bool `json:"email_verified"`
- }
- if err := json.Unmarshal(raw, &payload); err != nil {
- return "", false, fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
- }
-
- return payload.Email, payload.EmailVerified, nil
-}
-
-func ExtractIssuer(token string) (string, error) {
- iss, _, err := ExtractIssuerAndSubject(token)
- return iss, err
-}
-
-func ExtractIssuerAndSubject(token string) (string, string, error) {
- raw, err := decodeToken(token)
- if err != nil {
- return "", "", err
- }
-
- var payload struct {
- Issuer string `json:"iss"`
- Subject string `json:"sub"`
- }
-
- if err := json.Unmarshal(raw, &payload); err != nil {
- return "", "", fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
- }
- return NormalizeIssuer(payload.Issuer), payload.Subject, nil
-}
-
-func extractExpiry(rawToken []byte) (time.Time, error) {
- var payload struct {
- Expiry int64 `json:"exp"`
- }
-
- if err := json.Unmarshal(rawToken, &payload); err != nil {
- return time.Time{}, fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
- }
-
- return time.Unix(payload.Expiry, 0), nil
-}
-
-func ExtractExpiry(token string) (time.Time, error) {
- raw, err := decodeToken(token)
- if err != nil {
- return time.Time{}, err
- }
- return extractExpiry(raw)
-}
-
-func ExtractRefreshExpiry(token string) (time.Time, error) {
- raw, err := base64.StdEncoding.DecodeString(token)
- if err != nil {
- return time.Time{}, fmt.Errorf("refresh: malformed jwt payload: %w", err)
- }
- return extractExpiry(raw)
-}
diff --git a/auth/token.go b/auth/token.go
deleted file mode 100644
index b5593ea9..00000000
--- a/auth/token.go
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package auth
-
-import (
- "context"
-
- "google.golang.org/grpc/credentials"
-)
-
-type tokenAuth struct {
- token string
- secure bool
-}
-
-var _ credentials.PerRPCCredentials = (*tokenAuth)(nil)
-
-// GetRequestMetadata implements credentials.PerRPCCredentials
-func (ta *tokenAuth) GetRequestMetadata(_ context.Context, uri ...string) (map[string]string, error) { //nolint: revive
- return map[string]string{
- "Authorization": ta.token,
- }, nil
-}
-
-// RequireTransportSecurity implements credentials.PerRPCCredentials
-func (ta *tokenAuth) RequireTransportSecurity() bool {
- return ta.secure
-}
diff --git a/auth/token/token.go b/auth/token/token.go
deleted file mode 100644
index d1991926..00000000
--- a/auth/token/token.go
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package token
-
-import (
- "errors"
- "fmt"
- "io/fs"
- "os"
- "path/filepath"
- "runtime"
- "strings"
- "time"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Kind string
-
-const (
- KindAccess Kind = "oidc-token"
- KindRefresh Kind = "refresh-token"
-)
-
-var (
- AllKinds = []Kind{KindAccess, KindRefresh}
-)
-
-var (
- parentDir = "chainguard"
-)
-
-// Save saves the given token to cache/audience
-func Save(token []byte, kind Kind, audience string) error {
- path, err := Path(kind, audience)
- if err != nil {
- return err
- }
-
- if err := os.WriteFile(path, token, 0600); err != nil {
- return fmt.Errorf("writing token file: %w", err)
- }
- return nil
-}
-
-// Load returns the token for the given audience if it exists,
-// or an error if it doesn't.
-func Load(kind Kind, audience string) ([]byte, error) {
- path, err := Path(kind, audience)
- if err != nil {
- return nil, err
- }
-
- bs, err := os.ReadFile(path)
- if err != nil {
- return nil, fmt.Errorf("reading token file: %w", err)
- }
- return bs, nil
-}
-
-// Delete removes the token for the given audience, if it exists.
-// No error is returned if the token doesn't exist.
-func Delete(kind Kind, audience string) error {
- path, err := Path(kind, audience)
- if err != nil {
- return err
- }
- err = os.Remove(path)
- if err != nil && !errors.Is(err, fs.ErrNotExist) {
- return fmt.Errorf("failed to remove token (%s): %w", path, err)
- }
- return nil
-}
-
-// DeleteAll removes all Chainguard tokens and empty audience directories.
-func DeleteAll() error {
- base, err := cacheFilePath("")
- if err != nil {
- return fmt.Errorf("error locating Chainguard token dir: %w", err)
- }
- files, err := os.ReadDir(base)
- if err != nil {
- return fmt.Errorf("error reading Chainguard token dir: %w", err)
- }
- // Token directory is expected to be structured as group of audience-specific
- // directories, with a single file containing the token
- //
- // $ tree ~/Library/Caches/chainguard
- // /Users/foo/Library/Caches/chainguard
- // ├── https:--console-api.enforce.dev
- // │ └── oidc-token
- // ├── https:--cgr.dev
- // └── oidc-token
- for _, file := range files {
- if !file.IsDir() {
- // Encountered a file in the directory. Skip.
- continue
- }
- for _, kind := range AllKinds {
- // Try to remove a token, ignore file not exist errors
- tokenFile := filepath.Join(base, file.Name(), string(kind))
- if err := os.Remove(tokenFile); err != nil && !errors.Is(err, fs.ErrNotExist) {
- return fmt.Errorf("failed to remove %s: %w", tokenFile, err)
- }
- }
- // Remove the (hopefully empty) audience directory.
- // Ignore failures since other tools may have stored files in this cache.
- dir := filepath.Join(base, file.Name())
- _ = os.Remove(dir)
- }
- return nil
-}
-
-// Path is the filepath of the token for the given audience.
-func Path(kind Kind, audience string) (string, error) {
- a := strings.ReplaceAll(audience, "/", "-")
- // Windows does not allow : as a valid character for directory names.
- // For backwards compatibility, keep : in directory names for non-Windows systems.
- // Ref: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
- if runtime.GOOS == "windows" {
- a = strings.ReplaceAll(a, ":", "-")
- }
- fp := filepath.Join(a, string(kind))
- return cacheFilePath(fp)
-}
-
-// RemainingLife returns the amount of time remaining before the token for
-// the given audience expires. Returns 0 for expired and non-existent tokens.
-func RemainingLife(kind Kind, audience string, less time.Duration) time.Duration {
- tok, err := Load(kind, audience)
- if err != nil {
- // Not a big deal, life is zero.
- return 0
- }
- var expiry time.Time
- switch kind {
- case KindRefresh:
- expiry, err = auth.ExtractRefreshExpiry(string(tok))
- default:
- expiry, err = auth.ExtractExpiry(string(tok))
- }
- if err != nil {
- fmt.Printf("failed to extract expiry: %v\n", err)
- // Not a big deal, life is zero.
- return 0
- }
- return subtractOrZero(expiry, less)
-}
-
-// For testing.
-var timeUntil = time.Until
-
-// Safe calculation for duration remaining from a given time, less the given duration.
-func subtractOrZero(expiry time.Time, less time.Duration) time.Duration {
- life := timeUntil(expiry.Add(less * -1))
- if life < 0 {
- return 0
- }
- return life
-}
-
-func cacheFilePath(file string) (string, error) {
- path, err := os.UserCacheDir()
- if err != nil {
- return "", fmt.Errorf("failed to get user cache dir: %w", err)
- }
-
- // Create the cache directories if needed
- path = filepath.Join(path, parentDir, file)
- _, err = os.Stat(filepath.Dir(path))
- if errors.Is(err, os.ErrNotExist) {
- err = nil // Clear err, we're dealing with it.
- if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
- return "", fmt.Errorf("failed to create %s: %w", path, err)
- }
- }
- return path, err // err could be non-nil, if err != os.ErrNotExist
-}
diff --git a/auth/token/token_test.go b/auth/token/token_test.go
deleted file mode 100644
index 6a078fea..00000000
--- a/auth/token/token_test.go
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package token
-
-import (
- "encoding/base64"
- "encoding/json"
- "os"
- "path/filepath"
- "strings"
- "testing"
- "time"
-
- "github.com/go-jose/go-jose/v3/jwt"
- "github.com/google/go-cmp/cmp"
-
- "chainguard.dev/go-oidctest/pkg/oidctest"
-)
-
-func testToken(t *testing.T, audience, subject string, issuedAt time.Time, validDur time.Duration) string {
- t.Helper()
-
- signer, iss := oidctest.NewIssuer(t)
-
- tok, err := jwt.Signed(signer).Claims(jwt.Claims{
- Issuer: iss,
- IssuedAt: jwt.NewNumericDate(issuedAt),
- Expiry: jwt.NewNumericDate(issuedAt.Add(validDur)),
- Subject: subject,
- Audience: jwt.Audience{audience},
- }).CompactSerialize()
- if err != nil {
- t.Fatalf("CompactSerialize() = %v", err)
- }
-
- return tok
-}
-
-func testRefreshToken(t *testing.T, issuer, audience, subject string, issuedAt time.Time, validDur time.Duration) string {
- t.Helper()
-
- msg := jwt.Claims{
- Issuer: issuer,
- Subject: subject,
- Audience: jwt.Audience{audience},
- IssuedAt: jwt.NewNumericDate(issuedAt),
- Expiry: jwt.NewNumericDate(issuedAt.Add(validDur)),
- }
-
- bs, _ := json.Marshal(msg)
- code := base64.StdEncoding.EncodeToString(bs)
-
- return code
-}
-
-func TestSave(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
- cacheDir, err := os.UserCacheDir()
- if err != nil {
- t.Fatal(err)
- }
-
- tests := []struct {
- name string
- kind Kind
- audience string
- wantPath string
- }{{
- name: "sans audience",
- kind: KindAccess,
- audience: "", // Intentionally blank.
- wantPath: filepath.Join(cacheDir, parentDir, string(KindAccess)),
- }, {
- name: "with audience (sans replacement)",
- kind: KindAccess,
- audience: "audience",
- wantPath: filepath.Join(cacheDir, parentDir, "audience", string(KindAccess)),
- }, {
- name: "with audience (with replacement)",
- kind: KindRefresh,
- audience: "https://audience.unit.test",
- wantPath: filepath.Join(cacheDir, parentDir, "https:--audience.unit.test", string(KindRefresh)),
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // Save a token
- tokenContents := []byte("mytoken")
- if err := Save(tokenContents, test.kind, test.audience); err != nil {
- t.Fatalf("Save() unexpected error=%v", err)
- }
-
- // Manually check the expected file location
- _, err := os.Stat(test.wantPath)
- if err != nil {
- t.Fatalf("Expected token path returned error: %v", err)
- }
-
- gotContents, err := os.ReadFile(test.wantPath)
- if err != nil {
- t.Fatalf("Unexpected error reading token filepath=%s, err=%v", test.wantPath, err)
- }
-
- if diff := cmp.Diff(tokenContents, gotContents); diff != "" {
- t.Errorf("Reading %s returned unexpected results (-want, +got): %s", test.wantPath, diff)
- }
- })
- }
-}
-
-func TestLoad(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
- cacheDir, err := os.UserCacheDir()
- if err != nil {
- t.Fatal(err)
- }
-
- tests := []struct {
- name string
- kind Kind
- audience string
- }{{
- name: "sans audience",
- kind: KindAccess,
- audience: "", // Intentionally blank.
- }, {
- name: "with audience (sans replacement)",
- kind: KindAccess,
- audience: "audience",
- }, {
- name: "with audience (with replacement)",
- kind: KindRefresh,
- audience: "https://audience.unit.test",
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // Manually save a token
- tokenContents := []byte("mytoken")
- mutatedAud := strings.ReplaceAll(test.audience, "/", "-")
- path := filepath.Join(cacheDir, parentDir, mutatedAud)
- if err := os.MkdirAll(path, 0777); err != nil {
- t.Fatalf("Unexpected error creating temp dir: %v", err)
- }
- if err := os.WriteFile(filepath.Join(path, string(test.kind)), tokenContents, 0600); err != nil {
- t.Fatalf("Unexpected error writing test token: %v", err)
- }
-
- // Load the token, check its contents
- got, err := Load(test.kind, test.audience)
- if err != nil {
- t.Fatalf("Load() unexpected error=%v", err)
- }
- if string(tokenContents) != string(got) {
- t.Errorf("Load() return mismatch, want=%s, got=%s", tokenContents, got)
- }
- })
- }
-}
-
-func TestDelete(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
- cacheDir, err := os.UserCacheDir()
- if err != nil {
- t.Fatal(err)
- }
-
- tests := []struct {
- name string
- audience string
- kind Kind
- exists bool
- wantErr bool
- }{{
- name: "no audience ",
- audience: "", // Intentionally blank.
- kind: KindRefresh,
- wantErr: false,
- }, {
- name: "token doesn't exist",
- audience: "audience",
- exists: false,
- kind: KindAccess,
- wantErr: false,
- }, {
- name: "token does exist",
- audience: "audience",
- exists: true,
- kind: KindAccess,
- wantErr: false,
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // Manually save a token if it should exist
- if test.exists {
- tokenContents := []byte("mytoken")
- path := filepath.Join(cacheDir, parentDir, test.audience)
- if err := os.MkdirAll(path, 0777); err != nil {
- t.Fatalf("Unexpected error creating temp dir: %v", err)
- }
- if err := os.WriteFile(filepath.Join(path, string(test.kind)), tokenContents, 0600); err != nil {
- t.Fatalf("Unexpected error writing test token: %v", err)
- }
- }
-
- // Attempt to delete the token.
- err := Delete(test.kind, test.audience)
- if (err != nil) != test.wantErr {
- t.Fatalf("Delete() error return mismatch, want=%t got=%v", test.wantErr, err)
- }
- })
- }
-}
-
-func TestDeleteAll(t *testing.T) {
- tests := []struct {
- name string
- auds []string // Create sub-dirs for each of these in cacheDir
- audsWithTokens []string // Dirs from above that should also have a token (subset of auds)
- extraFiles []string // Any extra files outside of audience dirs to include (in root of cacheDir)
- wantErr bool
- }{{
- name: "no tokens, no extra files/dirs",
- auds: nil,
- audsWithTokens: nil,
- extraFiles: nil,
- wantErr: false,
- }, {
- name: "all aud dirs have token, no extra files",
- auds: []string{"audience1", "audience2"},
- audsWithTokens: []string{"audience1", "audience2"},
- extraFiles: nil,
- wantErr: false,
- }, {
- name: "some empty aud dirs, no extra files",
- auds: []string{"audience1", "audience2", "audience3", "audience4"},
- audsWithTokens: []string{"audience1", "audience2"},
- extraFiles: nil,
- wantErr: false,
- }, {
- name: "all empty aud dirs, no extra files",
- auds: []string{"audience1", "audience2", "audience3", "audience4"},
- audsWithTokens: []string{},
- extraFiles: nil,
- wantErr: false,
- }, {
- name: "all aud dirs have token, extra files in root",
- auds: []string{"audience1", "audience2"},
- audsWithTokens: []string{"audience1", "audience2"},
- extraFiles: []string{"extra1", "extra2"},
- wantErr: false,
- }, {
- name: "all aud dirs have token, extra files in dirs",
- auds: []string{"audience1", "audience2"},
- audsWithTokens: []string{"audience1", "audience2"},
- extraFiles: []string{filepath.Join("audience1", "extra1"), filepath.Join("some-dir", "extra2")},
- wantErr: false,
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // Make sure parent cache directory exists
- t.Setenv("HOME", t.TempDir())
- cacheDir, err := os.UserCacheDir()
- if err != nil {
- t.Fatal(err)
- }
- cacheDir = filepath.Join(cacheDir, parentDir)
-
- if err := os.MkdirAll(cacheDir, os.ModePerm); err != nil {
- t.Fatalf("failed to create parent dir %s: %s", cacheDir, err.Error())
- }
- // Create audience directories
- for _, aud := range test.auds {
- dir := filepath.Join(cacheDir, aud)
- if err := os.MkdirAll(dir, os.ModePerm); err != nil {
- t.Fatalf("failed to create dir %s: %s", dir, err.Error())
- }
- }
- // Populate "token" files
- for _, aud := range test.audsWithTokens {
- for _, kind := range AllKinds {
- tok := filepath.Join(cacheDir, aud, string(kind))
- if _, err := os.Create(tok); err != nil {
- t.Fatalf("failed to create fake token %s: %s", tok, err.Error())
- }
- }
- }
- // Create extra files
- for _, extra := range test.extraFiles {
- p := filepath.Join(cacheDir, extra)
- if err := os.MkdirAll(filepath.Dir(p), os.ModePerm); err != nil {
- t.Fatalf("failed to create dir %s: %s", filepath.Dir(p), err.Error())
- }
- if _, err := os.Create(p); err != nil {
- t.Fatalf("failed to create extra file %s: %s", p, err.Error())
- }
- }
-
- // Then burn it to the ground.
- err = DeleteAll()
-
- // Sift through the ashes.
- if (err != nil) != test.wantErr {
- t.Errorf("DeleteAll() error return mismatch, want=%t, got=%v", test.wantErr, err)
- }
- files, err := os.ReadDir(cacheDir)
- if err != nil {
- t.Fatalf("failed to list files in temp cache dir: %v", err)
- }
- // Only expect test.extraFiles to remain, all other files/dirs should have been removed.
- // TODO: make this more robust and count subfiles within dirs in `files`
- // This will currently fail to catch situation where one dir has >1 extra file
- if len(files) != len(test.extraFiles) {
- t.Errorf("Remaining files mismatch, want=%d, got=%d", len(test.extraFiles), len(files))
- }
- })
- }
-}
-
-func TestSaveLoadToken(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
-
- tests := []struct {
- description string
- audience string
- }{
- {
- description: "default audience",
- audience: "http://api.api-system.svc",
- }, {
- description: "default audience with audience",
- audience: "http://api.api-system.svc",
- }, {
- description: "custom audience",
- audience: "https://abc-sigstore.enforce.dev",
- },
- }
-
- for _, test := range tests {
- t.Run(test.description, func(t *testing.T) {
- for _, kind := range AllKinds {
- tokenContents := []byte("mytoken")
- if err := Save(tokenContents, kind, test.audience); err != nil {
- t.Fatal(err)
- }
- contents, err := Load(kind, test.audience)
- if err != nil {
- t.Fatal(err)
- }
- if string(contents) != string(tokenContents) {
- t.Fatalf("expected %s got %s", string(tokenContents), string(contents))
- }
- }
- })
- }
-}
-
-func TestRemainingLife(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
-
- now := time.Unix(0, 0)
- timeUntil = func(t time.Time) time.Duration {
- return t.Sub(now)
- }
-
- type ts struct {
- audience string
- subject string
- duration time.Duration
- }
-
- tests := []struct {
- name string
- token ts
- kind Kind
- audience string
- less time.Duration
- want time.Duration
- }{{
- name: "exists, 0 less, 30m remain",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindAccess,
- audience: "audience",
- less: 0,
- want: 30 * time.Minute,
- }, {
- name: "exists, less 10m, 20m remain",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindRefresh,
- audience: "audience",
- less: 10 * time.Minute,
- want: 20 * time.Minute,
- }, {
- name: "exists less 30m, 0s remain",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindAccess,
- audience: "audience",
- less: 30 * time.Minute,
- want: 0,
- }, {
- name: "exists less 30m, 0s remain (refresh)",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindRefresh,
- audience: "audience",
- less: 30 * time.Minute,
- want: 0,
- }, {
- name: "exists less 40m, 0s remain",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindAccess,
- audience: "audience",
- less: 40 * time.Minute,
- want: 0,
- }, {
- name: "doesn't exist, 0s returned",
- token: ts{
- audience: "audience",
- subject: "subject",
- duration: 30 * time.Minute,
- },
- kind: KindAccess,
- audience: "different",
- less: 0,
- want: 0,
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- var tok string
- if test.kind == KindAccess {
- tok = testToken(t, test.token.audience, test.token.subject, now, test.token.duration)
- } else {
- tok = testRefreshToken(t, "https://issuer.unit-test.com", test.token.audience, test.token.subject, now, test.token.duration)
- }
- if err := Save([]byte(tok), test.kind, test.token.audience); err != nil {
- t.Fatalf("Save() unexpected error=%v", err)
- }
-
- got := RemainingLife(test.kind, test.audience, test.less)
-
- if got != test.want {
- t.Fatalf("RemainingLife() mismatch, want=%v, got=%v", test.want, got)
- }
- })
- }
-}
-
-func TestPath(t *testing.T) {
- t.Setenv("HOME", t.TempDir())
-
- cacheDir, err := os.UserCacheDir()
- if err != nil {
- t.Fatal(err)
- }
-
- tests := map[string]struct {
- kind Kind
- audience string
- expectedPath string
- }{
- "no audience": {
- audience: "",
- kind: KindAccess,
- expectedPath: filepath.Join(cacheDir, parentDir, string(KindAccess)),
- },
- "audience sans replacement": {
- audience: "console.example.com",
- kind: KindAccess,
- expectedPath: filepath.Join(cacheDir, parentDir, "console.example.com", string(KindAccess)),
- },
- "audience with replacement": {
- audience: "https://console.example.com",
- kind: KindRefresh,
- expectedPath: filepath.Join(cacheDir, parentDir, "https:--console.example.com", string(KindRefresh)),
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- got, err := Path(test.kind, test.audience)
- if err != nil {
- t.Fatal(err)
- }
-
- if diff := cmp.Diff(test.expectedPath, got); diff != "" {
- t.Fatal("Path() mismatch (-want, +got):", diff)
- }
- })
- }
-}
diff --git a/civil/civil.go b/civil/civil.go
deleted file mode 100644
index 936e99ae..00000000
--- a/civil/civil.go
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// This is a fork of the cloud.google.com/go package of the same name, which
-// carries the patch from: https://github.com/googleapis/google-cloud-go/pull/6410
-
-// Copyright 2016 Google LLC
-//
-// 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.
-
-// Package civil implements types for civil time, a time-zone-independent
-// representation of time that follows the rules of the proleptic
-// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second
-// minutes.
-//
-// Because they lack location information, these types do not represent unique
-// moments or intervals of time. Use time.Time for that purpose.
-package civil
-
-import (
- "fmt"
- "time"
-)
-
-// A Date represents a date (year, month, day).
-//
-// This type does not include location information, and therefore does not
-// describe a unique 24-hour timespan.
-type Date struct {
- Year int // Year (e.g., 2014).
- Month time.Month // Month of the year (January = 1, ...).
- Day int // Day of the month, starting at 1.
-}
-
-// DateOf returns the Date in which a time occurs in that time's location.
-func DateOf(t time.Time) Date {
- var d Date
- d.Year, d.Month, d.Day = t.Date()
- return d
-}
-
-// ParseDate parses a string in RFC3339 full-date format and returns the date value it represents.
-func ParseDate(s string) (Date, error) {
- t, err := time.Parse("2006-01-02", s)
- if err != nil {
- return Date{}, err
- }
- return DateOf(t), nil
-}
-
-// String returns the date in RFC3339 full-date format.
-func (d Date) String() string {
- return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day)
-}
-
-// IsValid reports whether the date is valid.
-func (d Date) IsValid() bool {
- return DateOf(d.In(time.UTC)) == d
-}
-
-// In returns the time corresponding to time 00:00:00 of the date in the location.
-//
-// In is always consistent with time.Date, even when time.Date returns a time
-// on a different day. For example, if loc is America/Indiana/Vincennes, then both
-//
-// time.Date(1955, time.May, 1, 0, 0, 0, 0, loc)
-//
-// and
-//
-// civil.Date{Year: 1955, Month: time.May, Day: 1}.In(loc)
-//
-// return 23:00:00 on April 30, 1955.
-//
-// In panics if loc is nil.
-func (d Date) In(loc *time.Location) time.Time {
- return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)
-}
-
-// AddDays returns the date that is n days in the future.
-// n can also be negative to go into the past.
-func (d Date) AddDays(n int) Date {
- return DateOf(d.In(time.UTC).AddDate(0, 0, n))
-}
-
-// DaysSince returns the signed number of days between the date and s, not including the end day.
-// This is the inverse operation to AddDays.
-func (d Date) DaysSince(s Date) (days int) {
- // We convert to Unix time so we do not have to worry about leap seconds:
- // Unix time increases by exactly 86400 seconds per day.
- deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()
- return int(deltaUnix / 86400)
-}
-
-// Before reports whether d occurs before d2.
-func (d Date) Before(d2 Date) bool {
- if d.Year != d2.Year {
- return d.Year < d2.Year
- }
- if d.Month != d2.Month {
- return d.Month < d2.Month
- }
- return d.Day < d2.Day
-}
-
-// After reports whether d occurs after d2.
-func (d Date) After(d2 Date) bool {
- return d2.Before(d)
-}
-
-// IsZero reports whether date fields are set to their default value.
-func (d Date) IsZero() bool {
- return (d.Year == 0) && (int(d.Month) == 0) && (d.Day == 0)
-}
-
-// MarshalText implements the encoding.TextMarshaler interface.
-// The output is the result of d.String().
-func (d Date) MarshalText() ([]byte, error) {
- return []byte(d.String()), nil
-}
-
-// UnmarshalText implements the encoding.TextUnmarshaler interface.
-// The date is expected to be a string in a format accepted by ParseDate.
-func (d *Date) UnmarshalText(data []byte) error {
- var err error
- *d, err = ParseDate(string(data))
- return err
-}
-
-// A Time represents a time with nanosecond precision.
-//
-// This type does not include location information, and therefore does not
-// describe a unique moment in time.
-//
-// This type exists to represent the TIME type in storage-based APIs like BigQuery.
-// Most operations on Times are unlikely to be meaningful. Prefer the DateTime type.
-type Time struct {
- Hour int // The hour of the day in 24-hour format; range [0-23]
- Minute int // The minute of the hour; range [0-59]
- Second int // The second of the minute; range [0-59]
- Nanosecond int // The nanosecond of the second; range [0-999999999]
-}
-
-// TimeOf returns the Time representing the time of day in which a time occurs
-// in that time's location. It ignores the date.
-func TimeOf(t time.Time) Time {
- var tm Time
- tm.Hour, tm.Minute, tm.Second = t.Clock()
- tm.Nanosecond = t.Nanosecond()
- return tm
-}
-
-// ParseTime parses a string and returns the time value it represents.
-// ParseTime accepts an extended form of the RFC3339 partial-time format. After
-// the HH:MM:SS part of the string, an optional fractional part may appear,
-// consisting of a decimal point followed by one to nine decimal digits.
-// (RFC3339 admits only one digit after the decimal point).
-func ParseTime(s string) (Time, error) {
- t, err := time.Parse("15:04:05.999999999", s)
- if err != nil {
- return Time{}, err
- }
- return TimeOf(t), nil
-}
-
-// String returns the date in the format described in ParseTime. If Nanoseconds
-// is zero, no fractional part will be generated. Otherwise, the result will
-// end with a fractional part consisting of a decimal point and six digits.
-// The fractional part is limited to six digits because that is the precision
-// limit for BigQuery DATETIME columns.
-func (t Time) String() string {
- s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second)
- if t.Nanosecond == 0 {
- return s
- }
- return s + fmt.Sprintf(".%06d", t.Nanosecond/1000)
-}
-
-// IsValid reports whether the time is valid.
-func (t Time) IsValid() bool {
- // Construct a non-zero time.
- tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)
- return TimeOf(tm) == t
-}
-
-// IsZero reports whether time fields are set to their default value.
-func (t Time) IsZero() bool {
- return (t.Hour == 0) && (t.Minute == 0) && (t.Second == 0) && (t.Nanosecond == 0)
-}
-
-// Before reports whether t occurs before t2.
-func (t Time) Before(t2 Time) bool {
- if t.Hour != t2.Hour {
- return t.Hour < t2.Hour
- }
- if t.Minute != t2.Minute {
- return t.Minute < t2.Minute
- }
- if t.Second != t2.Second {
- return t.Second < t2.Second
- }
-
- return t.Nanosecond < t2.Nanosecond
-}
-
-// After reports whether t occurs after t2.
-func (t Time) After(t2 Time) bool {
- return t2.Before(t)
-}
-
-// MarshalText implements the encoding.TextMarshaler interface.
-// The output is the result of t.String().
-func (t Time) MarshalText() ([]byte, error) {
- return []byte(t.String()), nil
-}
-
-// UnmarshalText implements the encoding.TextUnmarshaler interface.
-// The time is expected to be a string in a format accepted by ParseTime.
-func (t *Time) UnmarshalText(data []byte) error {
- var err error
- *t, err = ParseTime(string(data))
- return err
-}
-
-// A DateTime represents a date and time.
-//
-// This type does not include location information, and therefore does not
-// describe a unique moment in time.
-type DateTime struct {
- Date Date
- Time Time
-}
-
-// Note: We deliberately do not embed Date into DateTime, to avoid promoting AddDays and Sub.
-
-// DateTimeOf returns the DateTime in which a time occurs in that time's location.
-func DateTimeOf(t time.Time) DateTime {
- return DateTime{
- Date: DateOf(t),
- Time: TimeOf(t),
- }
-}
-
-// ParseDateTime parses a string and returns the DateTime it represents.
-// ParseDateTime accepts a variant of the RFC3339 date-time format that omits
-// the time offset but includes an optional fractional time, as described in
-// ParseTime. Informally, the accepted format is
-//
-// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]
-//
-// where the 'T' may be a lower-case 't'.
-func ParseDateTime(s string) (DateTime, error) {
- t, err := time.Parse("2006-01-02T15:04:05.999999999", s)
- if err != nil {
- t, err = time.Parse("2006-01-02t15:04:05.999999999", s)
- if err != nil {
- return DateTime{}, err
- }
- }
- return DateTimeOf(t), nil
-}
-
-// String returns the date in the format described in ParseDate.
-func (dt DateTime) String() string {
- return dt.Date.String() + "T" + dt.Time.String()
-}
-
-// IsValid reports whether the datetime is valid.
-func (dt DateTime) IsValid() bool {
- return dt.Date.IsValid() && dt.Time.IsValid()
-}
-
-// In returns the time corresponding to the DateTime in the given location.
-//
-// If the time is missing or ambigous at the location, In returns the same
-// result as time.Date. For example, if loc is America/Indiana/Vincennes, then
-// both
-//
-// time.Date(1955, time.May, 1, 0, 30, 0, 0, loc)
-//
-// and
-//
-// civil.DateTime{
-// civil.Date{Year: 1955, Month: time.May, Day: 1}},
-// civil.Time{Minute: 30}}.In(loc)
-//
-// return 23:30:00 on April 30, 1955.
-//
-// In panics if loc is nil.
-func (dt DateTime) In(loc *time.Location) time.Time {
- return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)
-}
-
-// Before reports whether dt occurs before dt2.
-func (dt DateTime) Before(dt2 DateTime) bool {
- return dt.In(time.UTC).Before(dt2.In(time.UTC))
-}
-
-// After reports whether dt occurs after dt2.
-func (dt DateTime) After(dt2 DateTime) bool {
- return dt2.Before(dt)
-}
-
-// IsZero reports whether datetime fields are set to their default value.
-func (dt DateTime) IsZero() bool {
- return dt.Date.IsZero() && dt.Time.IsZero()
-}
-
-// MarshalText implements the encoding.TextMarshaler interface.
-// The output is the result of dt.String().
-func (dt DateTime) MarshalText() ([]byte, error) {
- return []byte(dt.String()), nil
-}
-
-// UnmarshalText implements the encoding.TextUnmarshaler interface.
-// The datetime is expected to be a string in a format accepted by ParseDateTime
-func (dt *DateTime) UnmarshalText(data []byte) error {
- var err error
- *dt, err = ParseDateTime(string(data))
- return err
-}
diff --git a/civil/civil_test.go b/civil/civil_test.go
deleted file mode 100644
index d1de7c73..00000000
--- a/civil/civil_test.go
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// This is a fork of the cloud.google.com/go package of the same name, which
-// carries the patch from: https://github.com/googleapis/google-cloud-go/pull/6410
-
-// Copyright 2016 Google LLC
-//
-// 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.
-
-package civil
-
-import (
- "encoding/json"
- "testing"
- "time"
-
- "github.com/google/go-cmp/cmp"
-)
-
-func TestDates(t *testing.T) {
- for _, test := range []struct {
- date Date
- loc *time.Location
- wantStr string
- wantTime time.Time
- }{
- {
- date: Date{2014, 7, 29},
- loc: time.Local,
- wantStr: "2014-07-29",
- wantTime: time.Date(2014, time.July, 29, 0, 0, 0, 0, time.Local),
- },
- {
- date: DateOf(time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local)),
- loc: time.UTC,
- wantStr: "2014-08-20",
- wantTime: time.Date(2014, 8, 20, 0, 0, 0, 0, time.UTC),
- },
- {
- date: DateOf(time.Date(999, time.January, 26, 0, 0, 0, 0, time.Local)),
- loc: time.UTC,
- wantStr: "0999-01-26",
- wantTime: time.Date(999, 1, 26, 0, 0, 0, 0, time.UTC),
- },
- } {
- if got := test.date.String(); got != test.wantStr {
- t.Errorf("%#v.String() = %q, want %q", test.date, got, test.wantStr)
- }
- if got := test.date.In(test.loc); !got.Equal(test.wantTime) {
- t.Errorf("%#v.In(%v) = %v, want %v", test.date, test.loc, got, test.wantTime)
- }
- }
-}
-
-func TestDateIsValid(t *testing.T) {
- for _, test := range []struct {
- date Date
- want bool
- }{
- {Date{2014, 7, 29}, true},
- {Date{2000, 2, 29}, true},
- {Date{10000, 12, 31}, true},
- {Date{1, 1, 1}, true},
- {Date{0, 1, 1}, true}, // year zero is OK
- {Date{-1, 1, 1}, true}, // negative year is OK
- {Date{1, 0, 1}, false},
- {Date{1, 1, 0}, false},
- {Date{2016, 1, 32}, false},
- {Date{2016, 13, 1}, false},
- {Date{1, -1, 1}, false},
- {Date{1, 1, -1}, false},
- } {
- got := test.date.IsValid()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.date, got, test.want)
- }
- }
-}
-
-func TestParseDate(t *testing.T) {
- for _, test := range []struct {
- str string
- want Date // if empty, expect an error
- }{
- {"2016-01-02", Date{2016, 1, 2}},
- {"2016-12-31", Date{2016, 12, 31}},
- {"0003-02-04", Date{3, 2, 4}},
- {"999-01-26", Date{}},
- {"", Date{}},
- {"2016-01-02x", Date{}},
- } {
- got, err := ParseDate(test.str)
- if got != test.want {
- t.Errorf("ParseDate(%q) = %+v, want %+v", test.str, got, test.want)
- }
- if err != nil && test.want != (Date{}) {
- t.Errorf("Unexpected error %v from ParseDate(%q)", err, test.str)
- }
- }
-}
-
-func TestDateArithmetic(t *testing.T) {
- for _, test := range []struct {
- desc string
- start Date
- end Date
- days int
- }{
- {
- desc: "zero days noop",
- start: Date{2014, 5, 9},
- end: Date{2014, 5, 9},
- days: 0,
- },
- {
- desc: "crossing a year boundary",
- start: Date{2014, 12, 31},
- end: Date{2015, 1, 1},
- days: 1,
- },
- {
- desc: "negative number of days",
- start: Date{2015, 1, 1},
- end: Date{2014, 12, 31},
- days: -1,
- },
- {
- desc: "full leap year",
- start: Date{2004, 1, 1},
- end: Date{2005, 1, 1},
- days: 366,
- },
- {
- desc: "full non-leap year",
- start: Date{2001, 1, 1},
- end: Date{2002, 1, 1},
- days: 365,
- },
- {
- desc: "crossing a leap second",
- start: Date{1972, 6, 30},
- end: Date{1972, 7, 1},
- days: 1,
- },
- {
- desc: "dates before the unix epoch",
- start: Date{101, 1, 1},
- end: Date{102, 1, 1},
- days: 365,
- },
- } {
- if got := test.start.AddDays(test.days); got != test.end {
- t.Errorf("[%s] %#v.AddDays(%v) = %#v, want %#v", test.desc, test.start, test.days, got, test.end)
- }
- if got := test.end.DaysSince(test.start); got != test.days {
- t.Errorf("[%s] %#v.Sub(%#v) = %v, want %v", test.desc, test.end, test.start, got, test.days)
- }
- }
-}
-
-func TestDateBefore(t *testing.T) {
- for _, test := range []struct {
- d1, d2 Date
- want bool
- }{
- {Date{2016, 12, 31}, Date{2017, 1, 1}, true},
- {Date{2016, 1, 1}, Date{2016, 1, 1}, false},
- {Date{2016, 12, 30}, Date{2016, 12, 31}, true},
- } {
- if got := test.d1.Before(test.d2); got != test.want {
- t.Errorf("%v.Before(%v): got %t, want %t", test.d1, test.d2, got, test.want)
- }
- }
-}
-
-func TestDateAfter(t *testing.T) {
- for _, test := range []struct {
- d1, d2 Date
- want bool
- }{
- {Date{2016, 12, 31}, Date{2017, 1, 1}, false},
- {Date{2016, 1, 1}, Date{2016, 1, 1}, false},
- {Date{2016, 12, 30}, Date{2016, 12, 31}, false},
- } {
- if got := test.d1.After(test.d2); got != test.want {
- t.Errorf("%v.After(%v): got %t, want %t", test.d1, test.d2, got, test.want)
- }
- }
-}
-
-func TestDateIsZero(t *testing.T) {
- for _, test := range []struct {
- date Date
- want bool
- }{
- {Date{2000, 2, 29}, false},
- {Date{10000, 12, 31}, false},
- {Date{-1, 0, 0}, false},
- {Date{0, 0, 0}, true},
- {Date{}, true},
- } {
- got := test.date.IsZero()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.date, got, test.want)
- }
- }
-}
-
-func TestTimeToString(t *testing.T) {
- for _, test := range []struct {
- str string
- time Time
- roundTrip bool // ParseTime(str).String() == str?
- }{
- {"13:26:33", Time{13, 26, 33, 0}, true},
- {"01:02:03.000023", Time{1, 2, 3, 23000}, true},
- {"00:00:00.000001", Time{0, 0, 0, 1000}, true},
- {"13:26:03.1", Time{13, 26, 3, 100000000}, false},
- {"13:26:33.0000003", Time{13, 26, 33, 300}, false},
- } {
- t.Run(test.str, func(t *testing.T) {
- gotTime, err := ParseTime(test.str)
- if err != nil {
- t.Errorf("ParseTime(%q): got error: %v", test.str, err)
- return
- }
- if gotTime != test.time {
- t.Errorf("ParseTime(%q) = %+v, want %+v", test.str, gotTime, test.time)
- }
- if test.roundTrip {
- gotStr := test.time.String()
- if gotStr != test.str {
- t.Errorf("%#v.String() = %q, want %q", test.time, gotStr, test.str)
- }
- }
- })
- }
-}
-
-func TestTimeOf(t *testing.T) {
- for _, test := range []struct {
- time time.Time
- want Time
- }{
- {time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local), Time{15, 8, 43, 1}},
- {time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC), Time{0, 0, 0, 0}},
- } {
- if got := TimeOf(test.time); got != test.want {
- t.Errorf("TimeOf(%v) = %+v, want %+v", test.time, got, test.want)
- }
- }
-}
-
-func TestTimeIsValid(t *testing.T) {
- for _, test := range []struct {
- time Time
- want bool
- }{
- {Time{0, 0, 0, 0}, true},
- {Time{23, 0, 0, 0}, true},
- {Time{23, 59, 59, 999999999}, true},
- {Time{24, 59, 59, 999999999}, false},
- {Time{23, 60, 59, 999999999}, false},
- {Time{23, 59, 60, 999999999}, false},
- {Time{23, 59, 59, 1000000000}, false},
- {Time{-1, 0, 0, 0}, false},
- {Time{0, -1, 0, 0}, false},
- {Time{0, 0, -1, 0}, false},
- {Time{0, 0, 0, -1}, false},
- } {
- got := test.time.IsValid()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.time, got, test.want)
- }
- }
-}
-
-func TestTimeIsZero(t *testing.T) {
- for _, test := range []struct {
- time Time
- want bool
- }{
- {Time{0, 0, 0, 0}, true},
- {Time{}, true},
- {Time{0, 0, 0, 1}, false},
- {Time{-1, 0, 0, 0}, false},
- {Time{0, -1, 0, 0}, false},
- } {
- got := test.time.IsZero()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.time, got, test.want)
- }
- }
-}
-
-func TestTimeBefore(t *testing.T) {
- for _, test := range []struct {
- t1, t2 Time
- want bool
- }{
- {Time{12, 0, 0, 0}, Time{14, 0, 0, 0}, true},
- {Time{12, 20, 0, 0}, Time{12, 30, 0, 0}, true},
- {Time{12, 20, 10, 0}, Time{12, 20, 20, 0}, true},
- {Time{12, 20, 10, 5}, Time{12, 20, 10, 10}, true},
- {Time{12, 20, 10, 5}, Time{12, 20, 10, 5}, false},
- } {
- if got := test.t1.Before(test.t2); got != test.want {
- t.Errorf("%v.Before(%v): got %t, want %t", test.t1, test.t2, got, test.want)
- }
- }
-}
-
-func TestTimeAfter(t *testing.T) {
- for _, test := range []struct {
- t1, t2 Time
- want bool
- }{
- {Time{12, 0, 0, 0}, Time{14, 0, 0, 0}, false},
- {Time{12, 20, 0, 0}, Time{12, 30, 0, 0}, false},
- {Time{12, 20, 10, 0}, Time{12, 20, 20, 0}, false},
- {Time{12, 20, 10, 5}, Time{12, 20, 10, 10}, false},
- {Time{12, 20, 10, 5}, Time{12, 20, 10, 5}, false},
- } {
- if got := test.t1.After(test.t2); got != test.want {
- t.Errorf("%v.After(%v): got %t, want %t", test.t1, test.t2, got, test.want)
- }
- }
-}
-
-func TestDateTimeToString(t *testing.T) {
- for _, test := range []struct {
- str string
- dateTime DateTime
- roundTrip bool // ParseDateTime(str).String() == str?
- }{
- {"2016-03-22T13:26:33", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 0}}, true},
- {"2016-03-22T13:26:33.000000600", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 600}}, false},
- {"2016-03-22T13:26:33.000006", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 6000}}, true},
- {"2016-03-22t13:26:33", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 0}}, false},
- } {
- t.Run(test.str, func(t *testing.T) {
- gotDateTime, err := ParseDateTime(test.str)
- if err != nil {
- t.Errorf("ParseDateTime(%q): got error: %v", test.str, err)
- return
- }
- if gotDateTime != test.dateTime {
- t.Errorf("ParseDateTime(%q) = %+v, want %+v", test.str, gotDateTime, test.dateTime)
- }
- if test.roundTrip {
- gotStr := test.dateTime.String()
- if gotStr != test.str {
- t.Errorf("%#v.String() = %q, want %q", test.dateTime, gotStr, test.str)
- }
- }
- })
- }
-}
-
-func TestParseDateTimeErrors(t *testing.T) {
- for _, str := range []string{
- "",
- "2016-03-22", // just a date
- "13:26:33", // just a time
- "2016-03-22 13:26:33", // wrong separating character
- "2016-03-22T13:26:33x", // extra at end
- } {
- if _, err := ParseDateTime(str); err == nil {
- t.Errorf("ParseDateTime(%q) succeeded, want error", str)
- }
- }
-}
-
-func TestDateTimeOf(t *testing.T) {
- for _, test := range []struct {
- time time.Time
- want DateTime
- }{
- {time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local),
- DateTime{Date{2014, 8, 20}, Time{15, 8, 43, 1}}},
- {time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC),
- DateTime{Date{1, 1, 1}, Time{0, 0, 0, 0}}},
- } {
- if got := DateTimeOf(test.time); got != test.want {
- t.Errorf("DateTimeOf(%v) = %+v, want %+v", test.time, got, test.want)
- }
- }
-}
-
-func TestDateTimeIsValid(t *testing.T) {
- // No need to be exhaustive here; it's just Date.IsValid && Time.IsValid.
- for _, test := range []struct {
- dt DateTime
- want bool
- }{
- {DateTime{Date{2016, 3, 20}, Time{0, 0, 0, 0}}, true},
- {DateTime{Date{2016, -3, 20}, Time{0, 0, 0, 0}}, false},
- {DateTime{Date{2016, 3, 20}, Time{24, 0, 0, 0}}, false},
- } {
- got := test.dt.IsValid()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.dt, got, test.want)
- }
- }
-}
-
-func TestDateTimeIn(t *testing.T) {
- dt := DateTime{Date{2016, 1, 2}, Time{3, 4, 5, 6}}
- got := dt.In(time.UTC)
- want := time.Date(2016, 1, 2, 3, 4, 5, 6, time.UTC)
- if !got.Equal(want) {
- t.Errorf("got %v, want %v", got, want)
- }
-}
-
-func TestDateTimeBefore(t *testing.T) {
- d1 := Date{2016, 12, 31}
- d2 := Date{2017, 1, 1}
- t1 := Time{5, 6, 7, 8}
- t2 := Time{5, 6, 7, 9}
- for _, test := range []struct {
- dt1, dt2 DateTime
- want bool
- }{
- {DateTime{d1, t1}, DateTime{d2, t1}, true},
- {DateTime{d1, t1}, DateTime{d1, t2}, true},
- {DateTime{d2, t1}, DateTime{d1, t1}, false},
- {DateTime{d2, t1}, DateTime{d2, t1}, false},
- } {
- if got := test.dt1.Before(test.dt2); got != test.want {
- t.Errorf("%v.Before(%v): got %t, want %t", test.dt1, test.dt2, got, test.want)
- }
- }
-}
-
-func TestDateTimeAfter(t *testing.T) {
- d1 := Date{2016, 12, 31}
- d2 := Date{2017, 1, 1}
- t1 := Time{5, 6, 7, 8}
- t2 := Time{5, 6, 7, 9}
- for _, test := range []struct {
- dt1, dt2 DateTime
- want bool
- }{
- {DateTime{d1, t1}, DateTime{d2, t1}, false},
- {DateTime{d1, t1}, DateTime{d1, t2}, false},
- {DateTime{d2, t1}, DateTime{d1, t1}, true},
- {DateTime{d2, t1}, DateTime{d2, t1}, false},
- } {
- if got := test.dt1.After(test.dt2); got != test.want {
- t.Errorf("%v.After(%v): got %t, want %t", test.dt1, test.dt2, got, test.want)
- }
- }
-}
-
-func TestDateTimeIsZero(t *testing.T) {
- for _, test := range []struct {
- dt DateTime
- want bool
- }{
- {DateTime{Date{2016, 3, 20}, Time{0, 0, 0, 0}}, false},
- {DateTime{Date{}, Time{5, 44, 20, 0}}, false},
- {DateTime{Date{2016, 3, 20}, Time{}}, false},
- {DateTime{Date{0, 0, 0}, Time{5, 16, 47, 2}}, false},
- {DateTime{Date{2021, 9, 5}, Time{9, 30, 51, 6}}, false},
- {DateTime{Date{}, Time{}}, true},
- {DateTime{Date{0, 0, 0}, Time{0, 0, 0, 0}}, true},
- {DateTime{Date{}, Time{0, 0, 0, 0}}, true},
- {DateTime{Date{0, 0, 0}, Time{}}, true},
- } {
- got := test.dt.IsZero()
- if got != test.want {
- t.Errorf("%#v: got %t, want %t", test.dt, got, test.want)
- }
- }
-}
-
-func TestMarshalJSON(t *testing.T) {
- for _, test := range []struct {
- value interface{}
- want string
- }{
- {Date{1987, 4, 15}, `"1987-04-15"`},
- {Time{18, 54, 2, 0}, `"18:54:02"`},
- {DateTime{Date{1987, 4, 15}, Time{18, 54, 2, 0}}, `"1987-04-15T18:54:02"`},
- } {
- bgot, err := json.Marshal(test.value)
- if err != nil {
- t.Fatal(err)
- }
- if got := string(bgot); got != test.want {
- t.Errorf("%#v: got %s, want %s", test.value, got, test.want)
- }
- }
-}
-
-func TestUnmarshalJSON(t *testing.T) {
- var d Date
- var tm Time
- var dt DateTime
- for _, test := range []struct {
- data string
- ptr interface{}
- want interface{}
- }{
- {`"1987-04-15"`, &d, &Date{1987, 4, 15}},
- {`"1987-04-\u0031\u0035"`, &d, &Date{1987, 4, 15}},
- {`"18:54:02"`, &tm, &Time{18, 54, 2, 0}},
- {`"1987-04-15T18:54:02"`, &dt, &DateTime{Date{1987, 4, 15}, Time{18, 54, 2, 0}}},
- } {
- if err := json.Unmarshal([]byte(test.data), test.ptr); err != nil {
- t.Fatalf("%s: %v", test.data, err)
- }
- if !cmp.Equal(test.ptr, test.want) {
- t.Errorf("%s: got %#v, want %#v", test.data, test.ptr, test.want)
- }
- }
-
- for _, bad := range []string{"", `""`, `"bad"`, `"1987-04-15x"`,
- `19870415`, // a JSON number
- `11987-04-15x`, // not a JSON string
-
- } {
- if json.Unmarshal([]byte(bad), &d) == nil {
- t.Errorf("%q, Date: got nil, want error", bad)
- }
- if json.Unmarshal([]byte(bad), &tm) == nil {
- t.Errorf("%q, Time: got nil, want error", bad)
- }
- if json.Unmarshal([]byte(bad), &dt) == nil {
- t.Errorf("%q, DateTime: got nil, want error", bad)
- }
- }
-}
diff --git a/events/extensions.go b/events/extensions.go
deleted file mode 100644
index 0a4e9520..00000000
--- a/events/extensions.go
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package events
-
-const (
- // DeliveryTypeKey is the CloudEvents extension name to filter on for kinds
- // of deliveries.
- DeliveryTypeKey = "chainguarddev1delivery"
- // DeliveryTypeWebhook defines webhook delivery type.
- DeliveryTypeWebhook = "webhook"
-
- // DeliveryWebhookTargetKey is the CloudEvents extension name to store the
- // target url for webhooks.
- DeliveryWebhookTargetKey = "chainguarddev1webhook"
-
- // DeliverySubscriptionKey is the CloudEvents extension name to store the
- // subscription id that caused the event.
- DeliverySubscriptionKey = "chainguarddev1subscription"
-
- // GroupKey is the CloudEvents extension name to store the group associated
- // to the event.
- GroupKey = "group"
- // ClusterKey is the CloudEvents extension name to store the cluster associated
- // to the event.
- ClusterKey = "cluster"
- // ImageKey is the CloudEvents extension name to store the image associated
- // to the event.
- ImageKey = "image"
-
- // AudienceKey labels an event for its intended audience ["internal", "customer"].
- AudienceKey = "audience"
- // AudienceInternal are events intended for the internal platform.
- AudienceInternal = "internal"
- // AudienceCustomer are events targeting outside the platform.
- AudienceCustomer = "customer"
-
- // ArrivalTimeKey is the CloudEvents extension name to store the Knative
- // arrival timestamp
- ArrivalTimeKey = "knativearrivaltime"
-)
diff --git a/events/generator/generator.go b/events/generator/generator.go
deleted file mode 100644
index 70bad22d..00000000
--- a/events/generator/generator.go
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright 2024 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package generator
-
-import (
- "chainguard.dev/sdk/civil"
- "google.golang.org/grpc/status"
-)
-
-const GenerateVulnReportEventType = "dev.chainguard.vulnreport.generate.v1"
-
-// GenerateVulnReportEvent is an event used to trigger the generation of scan reports on-demand
-type GenerateVulnReportEvent struct {
- // RepoID identifies the UIDP of the repository used to generate the report
- RepoID string `json:"repo_id"`
-
- // Digest holds the digest being used to generate the report.
- // Digest will hold the sha256 content.
- Digest string `json:"digest"`
-
- // Type determines whether the report being generated is a refresh.
- Type string `json:"type"`
-
- // When holds when the generation of the report occurred.
- When civil.DateTime `json:"when"`
-
- // Status to represent the problem
- Status *status.Status `json:"status,omitempty"`
-}
diff --git a/events/occurrence.go b/events/occurrence.go
deleted file mode 100644
index d77dcd7c..00000000
--- a/events/occurrence.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package events
-
-// Occurrence is the CloudEvent payload for events.
-type Occurrence struct {
- Actor *Actor `json:"actor,omitempty"`
-
- // Body is the resource that was created.
- Body interface{} `json:"body,omitempty"`
-}
-
-// Actor is the event payload form of which identity was responsible for the
-// event.
-type Actor struct {
- // Subject is the identity that triggered this event.
- Subject string `json:"subject"`
-
- // Actor contains the name/value pairs for each of the claims that were
- // validated to assume the identity whose UIDP appears in Subject above.
- Actor map[string]string `json:"act,omitempty"`
-}
-
-// Eventable allows us to define a set of methods that allow event metadata to
-// be collected.
-type Eventable interface {
- // CloudEventsSubject returns the subject to use for the cloudevent.
- CloudEventsSubject() string
-}
-
-// Extendable allows us to define a generic method to return extensions based on name.
-type Extendable interface {
- CloudEventsExtension(key string) (string, bool)
-}
-
-type Redactable interface {
- CloudEventsRedact() interface{}
-}
diff --git a/events/receiver/receiver.go b/events/receiver/receiver.go
deleted file mode 100644
index 565f5008..00000000
--- a/events/receiver/receiver.go
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package receiver
-
-import (
- "context"
- "crypto/sha256"
- "fmt"
- "net/http"
- "strings"
-
- "chainguard.dev/sdk/events"
- cloudevents "github.com/cloudevents/sdk-go/v2"
- cehttp "github.com/cloudevents/sdk-go/v2/protocol/http"
- "github.com/coreos/go-oidc/v3/oidc"
-)
-
-// Handler is a function that handles a CloudEvent.
-type Handler func(ctx context.Context, event cloudevents.Event) error
-
-// New returns a new Handler that verifies the Event was sent by Chainguard,
-// intended for the specified Group, then invokes the provided Handler.
-//
-// TODO(jason): Accept options for configuring the issuer and accepted event types.
-func New(ctx context.Context, issuer, group string, fn Handler) (Handler, error) {
- // Construct a verifier that ensures tokens are issued by the Chainguard
- // issuer we expect and are intended for a customer webhook.
- provider, err := oidc.NewProvider(ctx, issuer)
- if err != nil {
- return nil, fmt.Errorf("failed to create provider: %w", err)
- }
- verifier := provider.Verifier(&oidc.Config{ClientID: "customer"})
-
- return func(ctx context.Context, event cloudevents.Event) error {
- // We expect Chainguard webhooks to pass an Authorization header.
- auth := strings.TrimPrefix(cehttp.RequestDataFromContext(ctx).Header.Get("Authorization"), "Bearer ")
- if auth == "" {
- return cloudevents.NewHTTPResult(http.StatusUnauthorized, "Unauthorized")
- }
-
- claims := events.WebhookCustomClaims{}
-
- // Verify that the token is well-formed, and in fact intended for us!
- if tok, err := verifier.Verify(ctx, auth); err != nil {
- return cloudevents.NewHTTPResult(http.StatusForbidden, "unable to verify token: %w", err)
- } else if !strings.HasPrefix(tok.Subject, "webhook:") {
- return cloudevents.NewHTTPResult(http.StatusForbidden, "subject should be from the Chainguard webhook component, got: %s", tok.Subject)
- } else if got := strings.TrimPrefix(tok.Subject, "webhook:"); got != group {
- return cloudevents.NewHTTPResult(http.StatusForbidden, "this token is intended for %s, wanted one for %s", got, group)
- } else if err := tok.Claims(&claims); err != nil {
- return cloudevents.NewHTTPResult(http.StatusForbidden, "this token does not contain the Chainguard custom webhook claims: %v", err)
- }
-
- h := sha256.New()
- h.Write(event.Data())
- bs := h.Sum(nil)
- if got, want := fmt.Sprintf("sha256:%x", bs), claims.Webhook.Digest; got != want {
- return cloudevents.NewHTTPResult(http.StatusForbidden, "this token is intended for a message with digest %s, got message with digest %s", want, got)
- }
-
- return fn(ctx, event)
- }, nil
-}
diff --git a/events/registry/registry.go b/events/registry/registry.go
deleted file mode 100644
index ff4519f5..00000000
--- a/events/registry/registry.go
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package registry
-
-import "chainguard.dev/sdk/civil"
-
-const (
- // PulledEventType is the cloudevents event type for registry pulls
- PulledEventType = "dev.chainguard.registry.pull.v1"
-
- // PushedEventType is the cloudevents event type for registry pushes
- PushedEventType = "dev.chainguard.registry.push.v1"
-
- // RepoCreatedEventType is the cloudevents event type for registry repo created
- RepoCreatedEventType = "dev.chainguard.api.platform.registry.repo.created.v1"
-
- // RepoUpdatedEventType is the cloudevents event type for registry repo updated
- RepoUpdatedEventType = "dev.chainguard.api.platform.registry.repo.updated.v1"
-)
-
-// PullEvent describes an item being pulled from the registry.
-type PullEvent struct {
- // Repository identifies the repository being pulled
- Repository string `json:"repository"`
-
- // RepoID identifies the UIDP of the repository being pulled
- RepoID string `json:"repo_id"`
-
- // Tag holds the tag being pulled, if there is one.
- Tag string `json:"tag,omitempty"`
-
- // Digest holds the digest being pulled.
- // Digest will hold the sha256 of the content being fetched, whether that is
- // a blob or a manifest.
- Digest string `json:"digest"`
-
- // Method holds the HTTP method of the request. For pulls, this should be
- // one of HEAD (digest resolution or existence check), or GET to actually
- // fetch the content.
- Method string `json:"method"`
-
- // Type determines whether the object being fetched is a manifest or blob.
- Type string `json:"type"`
-
- // When holds when the pull occurred.
- When civil.DateTime `json:"when"`
-
- // Location holds the detected approximate location of the client who pulled.
- // For example, "ColumbusOHUS" or "Minato City13JP".
- Location string `json:"location"`
-
- // UserAgent holds the user-agent of the client who pulled.
- UserAgent string `json:"user_agent"`
-
- Error *Error `json:"error,omitempty"`
-}
-
-// PushEvent describes an item being pushed to the registry.
-type PushEvent struct {
- // Repository identifies the repository being pushed
- Repository string `json:"repository"`
-
- // RepoID identifies the UIDP of the repository being pushed
- RepoID string `json:"repo_id"`
-
- // Tag holds the tag being pushed, if there is one.
- Tag string `json:"tag,omitempty"`
-
- // Digest holds the digest being pushed.
- // Digest will hold the sha256 of the content being pushed, whether that is
- // a blob or a manifest.
- Digest string `json:"digest"`
-
- // Type determines whether the object being pushed is a manifest or blob.
- Type string `json:"type"`
-
- // When holds when the push occurred.
- When civil.DateTime `json:"when"`
-
- // Location holds the detected approximate location of the client who pushed.
- // For example, "ColumbusOHUS" or "Minato City13JP".
- Location string `json:"location"`
-
- // UserAgent holds the user-agent of the client who pushed.
- UserAgent string `json:"user_agent"`
-
- Error *Error `json:"error,omitempty"`
-}
-
-type Error struct {
- Status int `json:"status"`
- Code string `json:"code"`
- Message string `json:"message"`
-}
diff --git a/events/webhook.go b/events/webhook.go
deleted file mode 100644
index 56a17013..00000000
--- a/events/webhook.go
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package events
-
-// WebhookCustomClaims holds the custom claims embedded in the webhook's
-// OIDC authorization token.
-type WebhookCustomClaims struct {
- Webhook struct {
- Digest string `json:"digest"`
- } `json:"webhook"`
-}
diff --git a/go.mod b/go.mod
deleted file mode 100644
index 01999ae3..00000000
--- a/go.mod
+++ /dev/null
@@ -1,76 +0,0 @@
-module chainguard.dev/sdk
-
-go 1.22.2
-
-require (
- chainguard.dev/go-grpc-kit v0.17.2
- chainguard.dev/go-oidctest v0.3.1
- github.com/aws/aws-sdk-go-v2 v1.26.0
- github.com/bits-and-blooms/bitset v1.13.0
- github.com/chainguard-dev/clog v1.3.1
- github.com/cloudevents/sdk-go/v2 v2.15.2
- github.com/coreos/go-oidc/v3 v3.10.0
- github.com/go-jose/go-jose/v3 v3.0.3
- github.com/google/go-cmp v0.6.0
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1
- github.com/microcosm-cc/bluemonday v1.0.26
- github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
- github.com/russross/blackfriday/v2 v2.1.0
- go.uber.org/zap v1.27.0
- golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
- golang.org/x/oauth2 v0.19.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c
- google.golang.org/grpc v1.63.2
- google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
- google.golang.org/protobuf v1.33.0
- k8s.io/apimachinery v0.29.1
-)
-
-require (
- github.com/aws/smithy-go v1.20.1 // indirect
- github.com/aymerick/douceur v0.2.0 // indirect
- github.com/beorn7/perks v1.0.1 // indirect
- github.com/blendle/zapdriver v1.3.1 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
- github.com/go-jose/go-jose/v4 v4.0.1 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
- github.com/go-logr/stdr v1.2.2 // indirect
- github.com/gogo/protobuf v1.3.2 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/uuid v1.6.0 // indirect
- github.com/gorilla/css v1.0.0 // indirect
- github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
- github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/kelseyhightower/envconfig v1.4.0 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
- github.com/prometheus/client_golang v1.19.0 // indirect
- github.com/prometheus/client_model v0.6.0 // indirect
- github.com/prometheus/common v0.51.1 // indirect
- github.com/prometheus/procfs v0.12.0 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/otel v1.26.0 // indirect
- go.opentelemetry.io/otel/metric v1.26.0 // indirect
- go.opentelemetry.io/otel/trace v1.26.0 // indirect
- go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
- golang.org/x/net v0.24.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- golang.org/x/tools v0.19.0 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect
- gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/yaml.v2 v2.4.0 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/api v0.29.1 // indirect
- k8s.io/klog/v2 v2.120.1 // indirect
- k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
- knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
-)
diff --git a/go.sum b/go.sum
deleted file mode 100644
index 3d01b98d..00000000
--- a/go.sum
+++ /dev/null
@@ -1,308 +0,0 @@
-chainguard.dev/go-grpc-kit v0.17.2 h1:WVYmCjDncj1MkEiU4qq7nIgzyqlCU+qyk0lJvTJ09bs=
-chainguard.dev/go-grpc-kit v0.17.2/go.mod h1:uZTFtFzAGyVFHhJexiHbna4N5rHQU7aUXPwytlGhqz4=
-chainguard.dev/go-oidctest v0.3.1 h1:Q1OvIVIcl+i0hqgmrXZLeDhSjtDjbnLEBASoTbhyuBY=
-chainguard.dev/go-oidctest v0.3.1/go.mod h1:TDN6MPJ6BEzWtorS9/dHzzGiaBpPRnRONv2SE0mqitU=
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/aws/aws-sdk-go-v2 v1.26.0 h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA=
-github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I=
-github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw=
-github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
-github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
-github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
-github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
-github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
-github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
-github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
-github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE=
-github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chainguard-dev/clog v1.3.1 h1:CDNCty5WKQhJzoOPubk0GdXt+bPQyargmfClqebrpaQ=
-github.com/chainguard-dev/clog v1.3.1/go.mod h1:cV516KZWqYc/phZsCNwF36u/KMGS+Gj5Uqeb8Hlp95Y=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
-github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU=
-github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
-github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
-github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
-github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U=
-github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY=
-github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
-github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
-github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
-github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
-github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
-github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
-github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
-github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
-github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
-github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
-github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
-github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
-github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
-github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
-github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
-github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
-github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
-github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
-github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.51.1 h1:eIjN50Bwglz6a/c3hAgSMcofL3nD+nFQkV6Dd4DsQCw=
-github.com/prometheus/common v0.51.1/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q=
-github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
-github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
-github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
-github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs=
-go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4=
-go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30=
-go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4=
-go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA=
-go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
-go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
-go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
-go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
-go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=
-golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
-golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
-golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
-golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
-golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
-google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
-google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
-google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
-google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-k8s.io/api v0.29.1 h1:DAjwWX/9YT7NQD4INu49ROJuZAAAP/Ijki48GUPzxqw=
-k8s.io/api v0.29.1/go.mod h1:7Kl10vBRUXhnQQI8YR/R327zXC8eJ7887/+Ybta+RoQ=
-k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc=
-k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU=
-k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
-k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
-k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 h1:NJm46LR4AeO03E0H7B+TYTkelTSnsswktpIAaK1pkTg=
-knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845/go.mod h1:9UXGl+Sue7Am1/mbvLimpPZwQlOkbjAMMIenH60pVJ4=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/hack/tools.go b/hack/tools.go
deleted file mode 100644
index eea6e0ce..00000000
--- a/hack/tools.go
+++ /dev/null
@@ -1,17 +0,0 @@
-//go:build tools
-// +build tools
-
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package tools
-
-import (
- // Proto dependencies.
- _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
- _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
- _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
- _ "google.golang.org/protobuf/cmd/protoc-gen-go"
-)
diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh
deleted file mode 100755
index a557bd13..00000000
--- a/hack/update-codegen.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2022 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-REPO_ROOT_DIR=$PWD/$(dirname "$0")/..
-
-echo === Tidying up for Golang
-go mod tidy
-
-echo === Generating for Golang
-go generate ./...
-
-# Make sure our dependencies are up-to-date
-${REPO_ROOT_DIR}/hack/update-deps.sh
diff --git a/hack/update-deps.sh b/hack/update-deps.sh
deleted file mode 100755
index 19e9873e..00000000
--- a/hack/update-deps.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2022 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-REPO_ROOT_DIR=$(dirname "$0")/..
-pushd ${REPO_ROOT_DIR}
-
-echo === Update Deps for Golang
-go mod tidy
diff --git a/hack/verify-golangci-lint.sh b/hack/verify-golangci-lint.sh
deleted file mode 100755
index ec8c6ef0..00000000
--- a/hack/verify-golangci-lint.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2023 Chainguard, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-VERSION=v1.54.2
-URL_BASE=https://raw.githubusercontent.com/golangci/golangci-lint
-URL=$URL_BASE/$VERSION/install.sh
-# If you update the version above you might need to update the checksum
-# if it does not match. We say might because in the past the install script
-# has been unchanged even if there is a new verion of golangci-lint.
-# To obtain the checksum, download the install script and run the following
-# command:
-# > sha256sum
-INSTALL_CHECKSUM=060f1f3deb31b3d3b9515d691d9a776354cd63c7fcb5e036f18f0444cf2c934b
-
-if [[ ! -f .golangci.yml ]]; then
- echo 'ERROR: missing .golangci.yml in repo root' >&2
- exit 1
-fi
-
-if ! command -v golangci-lint; then
- INSTALL_SCRIPT=$(mktemp -d)/install.sh
- curl -sfL $URL >$INSTALL_SCRIPT
- if echo "${INSTALL_CHECKSUM} $INSTALL_SCRIPT" | sha256sum --check; then
- chmod 755 $INSTALL_SCRIPT
- $INSTALL_SCRIPT -b /tmp $VERSION
- export PATH=$PATH:/tmp
- pwd
- else
- echo 'ERROR: install script sha256 checksum invalid' >&2
- exit 1
- fi
-fi
-
-golangci-lint version
-
-error=0
-while read -r i; do
- echo "Checking golangci-lint for $i"
- pushd "$i"
- golangci-lint run ./... || error=1
- popd
-done <<< "$(find . -name go.mod -exec dirname {} \;)"
-
-exit $error
diff --git a/proto/annotations/auth.pb.go b/proto/annotations/auth.pb.go
deleted file mode 100644
index b41797d0..00000000
--- a/proto/annotations/auth.pb.go
+++ /dev/null
@@ -1,342 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: auth.proto
-
-package annotations
-
-import (
- capabilities "chainguard.dev/sdk/proto/capabilities"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type IAM struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Mode:
- //
- // *IAM_Disabled
- // *IAM_Enabled
- Mode isIAM_Mode `protobuf_oneof:"mode"`
-}
-
-func (x *IAM) Reset() {
- *x = IAM{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IAM) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IAM) ProtoMessage() {}
-
-func (x *IAM) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IAM.ProtoReflect.Descriptor instead.
-func (*IAM) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{0}
-}
-
-func (m *IAM) GetMode() isIAM_Mode {
- if m != nil {
- return m.Mode
- }
- return nil
-}
-
-func (x *IAM) GetDisabled() *emptypb.Empty {
- if x, ok := x.GetMode().(*IAM_Disabled); ok {
- return x.Disabled
- }
- return nil
-}
-
-func (x *IAM) GetEnabled() *IAM_Rules {
- if x, ok := x.GetMode().(*IAM_Enabled); ok {
- return x.Enabled
- }
- return nil
-}
-
-type isIAM_Mode interface {
- isIAM_Mode()
-}
-
-type IAM_Disabled struct {
- Disabled *emptypb.Empty `protobuf:"bytes,1,opt,name=disabled,proto3,oneof"`
-}
-
-type IAM_Enabled struct {
- Enabled *IAM_Rules `protobuf:"bytes,2,opt,name=enabled,proto3,oneof"`
-}
-
-func (*IAM_Disabled) isIAM_Mode() {}
-
-func (*IAM_Enabled) isIAM_Mode() {}
-
-type IAM_Rules struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // A list of capabilities required by a particular API.
- // This field is either scoped or unscoped, as determined
- // by the field below.
- // - When it is "scoped", this field is combined with the
- // field designated by "(iam_scope) = true" (see below)
- // on the request message to indicate what capabilities
- // the caller needs at what scope in order to authorize
- // the action they are performing.
- // - When is it "unscoped", this field is used to determine
- // the set of scopes the caller has the appropriate access
- // to so that the RPC itself can scope down the results
- // it returns.
- Capabilities []capabilities.Capability `protobuf:"varint,1,rep,packed,name=capabilities,proto3,enum=chainguard.capabilities.Capability" json:"capabilities,omitempty"`
- // Unscoped is set on APIs where the request itself doesn't
- // carry a field with "iam_scope", and instead scopes itself
- // to the set of groups to which the caller has access
- // according to their OIDC token.
- Unscoped bool `protobuf:"varint,2,opt,name=unscoped,proto3" json:"unscoped,omitempty"`
-}
-
-func (x *IAM_Rules) Reset() {
- *x = IAM_Rules{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IAM_Rules) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IAM_Rules) ProtoMessage() {}
-
-func (x *IAM_Rules) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IAM_Rules.ProtoReflect.Descriptor instead.
-func (*IAM_Rules) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *IAM_Rules) GetCapabilities() []capabilities.Capability {
- if x != nil {
- return x.Capabilities
- }
- return nil
-}
-
-func (x *IAM_Rules) GetUnscoped() bool {
- if x != nil {
- return x.Unscoped
- }
- return false
-}
-
-var file_auth_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.MethodOptions)(nil),
- ExtensionType: (*IAM)(nil),
- Field: 189350641,
- Name: "chainguard.annotations.iam",
- Tag: "bytes,189350641,opt,name=iam",
- Filename: "auth.proto",
- },
- {
- ExtendedType: (*descriptorpb.FieldOptions)(nil),
- ExtensionType: (*bool)(nil),
- Field: 189350642,
- Name: "chainguard.annotations.iam_scope",
- Tag: "varint,189350642,opt,name=iam_scope",
- Filename: "auth.proto",
- },
-}
-
-// Extension fields to descriptorpb.MethodOptions.
-var (
- // optional chainguard.annotations.IAM iam = 189350641;
- E_Iam = &file_auth_proto_extTypes[0] // randomly chosen
-)
-
-// Extension fields to descriptorpb.FieldOptions.
-var (
- // optional bool iam_scope = 189350642;
- E_IamScope = &file_auth_proto_extTypes[1] // one more than above
-)
-
-var File_auth_proto protoreflect.FileDescriptor
-
-var file_auth_proto_rawDesc = []byte{
- 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
- 0x73, 0x2f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf0, 0x01, 0x0a, 0x03, 0x49, 0x41, 0x4d, 0x12, 0x34, 0x0a, 0x08,
- 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
- 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x41, 0x4d,
- 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x64, 0x1a, 0x6c, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61,
- 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e,
- 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63, 0x61,
- 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x42,
- 0x06, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x50, 0x0a, 0x03, 0x69, 0x61, 0x6d, 0x12, 0x1e,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf1,
- 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x49, 0x41, 0x4d, 0x52, 0x03, 0x69, 0x61, 0x6d, 0x3a, 0x3d, 0x0a, 0x09, 0x69, 0x61, 0x6d,
- 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf2, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
- 0x69, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x5a, 0x0a, 0x1e, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x41, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_auth_proto_rawDescOnce sync.Once
- file_auth_proto_rawDescData = file_auth_proto_rawDesc
-)
-
-func file_auth_proto_rawDescGZIP() []byte {
- file_auth_proto_rawDescOnce.Do(func() {
- file_auth_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_proto_rawDescData)
- })
- return file_auth_proto_rawDescData
-}
-
-var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_auth_proto_goTypes = []interface{}{
- (*IAM)(nil), // 0: chainguard.annotations.IAM
- (*IAM_Rules)(nil), // 1: chainguard.annotations.IAM.Rules
- (*emptypb.Empty)(nil), // 2: google.protobuf.Empty
- (capabilities.Capability)(0), // 3: chainguard.capabilities.Capability
- (*descriptorpb.MethodOptions)(nil), // 4: google.protobuf.MethodOptions
- (*descriptorpb.FieldOptions)(nil), // 5: google.protobuf.FieldOptions
-}
-var file_auth_proto_depIdxs = []int32{
- 2, // 0: chainguard.annotations.IAM.disabled:type_name -> google.protobuf.Empty
- 1, // 1: chainguard.annotations.IAM.enabled:type_name -> chainguard.annotations.IAM.Rules
- 3, // 2: chainguard.annotations.IAM.Rules.capabilities:type_name -> chainguard.capabilities.Capability
- 4, // 3: chainguard.annotations.iam:extendee -> google.protobuf.MethodOptions
- 5, // 4: chainguard.annotations.iam_scope:extendee -> google.protobuf.FieldOptions
- 0, // 5: chainguard.annotations.iam:type_name -> chainguard.annotations.IAM
- 6, // [6:6] is the sub-list for method output_type
- 6, // [6:6] is the sub-list for method input_type
- 5, // [5:6] is the sub-list for extension type_name
- 3, // [3:5] is the sub-list for extension extendee
- 0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_auth_proto_init() }
-func file_auth_proto_init() {
- if File_auth_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_auth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IAM); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IAM_Rules); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_auth_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*IAM_Disabled)(nil),
- (*IAM_Enabled)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_auth_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 2,
- NumServices: 0,
- },
- GoTypes: file_auth_proto_goTypes,
- DependencyIndexes: file_auth_proto_depIdxs,
- MessageInfos: file_auth_proto_msgTypes,
- ExtensionInfos: file_auth_proto_extTypes,
- }.Build()
- File_auth_proto = out.File
- file_auth_proto_rawDesc = nil
- file_auth_proto_goTypes = nil
- file_auth_proto_depIdxs = nil
-}
diff --git a/proto/annotations/auth.proto b/proto/annotations/auth.proto
deleted file mode 100644
index 99f29d9e..00000000
--- a/proto/annotations/auth.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/annotations";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.annotations";
-option java_outer_classname = "AnnotationsProto";
-
-package chainguard.annotations;
-
-import "google/protobuf/descriptor.proto";
-import "google/protobuf/empty.proto";
-import "capabilities/capabilities.proto";
-
-extend google.protobuf.MethodOptions {
- IAM iam = 189350641; // randomly chosen
-}
-
-message IAM {
- oneof mode {
- google.protobuf.Empty disabled = 1;
- Rules enabled = 2;
- }
-
- message Rules {
- // A list of capabilities required by a particular API.
- // This field is either scoped or unscoped, as determined
- // by the field below.
- // * When it is "scoped", this field is combined with the
- // field designated by "(iam_scope) = true" (see below)
- // on the request message to indicate what capabilities
- // the caller needs at what scope in order to authorize
- // the action they are performing.
- // * When is it "unscoped", this field is used to determine
- // the set of scopes the caller has the appropriate access
- // to so that the RPC itself can scope down the results
- // it returns.
- repeated chainguard.capabilities.Capability capabilities = 1;
-
- // Unscoped is set on APIs where the request itself doesn't
- // carry a field with "iam_scope", and instead scopes itself
- // to the set of groups to which the caller has access
- // according to their OIDC token.
- bool unscoped = 2;
- }
-}
-
-extend google.protobuf.FieldOptions {
- bool iam_scope = 189350642; // one more than above
-}
diff --git a/proto/annotations/doc.go b/proto/annotations/doc.go
deleted file mode 100644
index 705d5049..00000000
--- a/proto/annotations/doc.go
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package accounts contains the GRPC client and server definitions
-// for implementing Auth interactions for the Console.
-//
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. auth.proto
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. events.proto
-package annotations
diff --git a/proto/annotations/events.pb.go b/proto/annotations/events.pb.go
deleted file mode 100644
index 0b371f7d..00000000
--- a/proto/annotations/events.pb.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: events.proto
-
-package annotations
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type EventAttributes_Audience int32
-
-const (
- // intended for inside the bounds of the platform.
- EventAttributes_INTERNAL EventAttributes_Audience = 0
- // allowed to be sent outside the platform.
- EventAttributes_CUSTOMER EventAttributes_Audience = 1
-)
-
-// Enum value maps for EventAttributes_Audience.
-var (
- EventAttributes_Audience_name = map[int32]string{
- 0: "INTERNAL",
- 1: "CUSTOMER",
- }
- EventAttributes_Audience_value = map[string]int32{
- "INTERNAL": 0,
- "CUSTOMER": 1,
- }
-)
-
-func (x EventAttributes_Audience) Enum() *EventAttributes_Audience {
- p := new(EventAttributes_Audience)
- *p = x
- return p
-}
-
-func (x EventAttributes_Audience) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EventAttributes_Audience) Descriptor() protoreflect.EnumDescriptor {
- return file_events_proto_enumTypes[0].Descriptor()
-}
-
-func (EventAttributes_Audience) Type() protoreflect.EnumType {
- return &file_events_proto_enumTypes[0]
-}
-
-func (x EventAttributes_Audience) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use EventAttributes_Audience.Descriptor instead.
-func (EventAttributes_Audience) EnumDescriptor() ([]byte, []int) {
- return file_events_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type EventAttributes struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // type is the cloudevent type to use for the outbound event.
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- // extensions lists which extensions
- Extensions []string `protobuf:"bytes,2,rep,name=extensions,proto3" json:"extensions,omitempty"`
- // audience is the intended audience for the event.
- Audience EventAttributes_Audience `protobuf:"varint,3,opt,name=audience,proto3,enum=chainguard.annotations.EventAttributes_Audience" json:"audience,omitempty"`
-}
-
-func (x *EventAttributes) Reset() {
- *x = EventAttributes{}
- if protoimpl.UnsafeEnabled {
- mi := &file_events_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *EventAttributes) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EventAttributes) ProtoMessage() {}
-
-func (x *EventAttributes) ProtoReflect() protoreflect.Message {
- mi := &file_events_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use EventAttributes.ProtoReflect.Descriptor instead.
-func (*EventAttributes) Descriptor() ([]byte, []int) {
- return file_events_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *EventAttributes) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *EventAttributes) GetExtensions() []string {
- if x != nil {
- return x.Extensions
- }
- return nil
-}
-
-func (x *EventAttributes) GetAudience() EventAttributes_Audience {
- if x != nil {
- return x.Audience
- }
- return EventAttributes_INTERNAL
-}
-
-var file_events_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.MethodOptions)(nil),
- ExtensionType: (*EventAttributes)(nil),
- Field: 401635080,
- Name: "chainguard.annotations.events",
- Tag: "bytes,401635080,opt,name=events",
- Filename: "events.proto",
- },
-}
-
-// Extension fields to descriptorpb.MethodOptions.
-var (
- // optional chainguard.annotations.EventAttributes events = 401635080;
- E_Events = &file_events_proto_extTypes[0] // randomly chosen
-)
-
-var File_events_proto protoreflect.FileDescriptor
-
-var file_events_proto_rawDesc = []byte{
- 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
- 0x12, 0x4c, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69,
- 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x26,
- 0x0a, 0x08, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e,
- 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x55, 0x53, 0x54,
- 0x4f, 0x4d, 0x45, 0x52, 0x10, 0x01, 0x3a, 0x63, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x88, 0xee, 0xc1, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x73, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x5a, 0x0a, 0x1e, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
- 0x6b, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x41,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x24, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
- 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_events_proto_rawDescOnce sync.Once
- file_events_proto_rawDescData = file_events_proto_rawDesc
-)
-
-func file_events_proto_rawDescGZIP() []byte {
- file_events_proto_rawDescOnce.Do(func() {
- file_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_events_proto_rawDescData)
- })
- return file_events_proto_rawDescData
-}
-
-var file_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_events_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_events_proto_goTypes = []interface{}{
- (EventAttributes_Audience)(0), // 0: chainguard.annotations.EventAttributes.Audience
- (*EventAttributes)(nil), // 1: chainguard.annotations.EventAttributes
- (*descriptorpb.MethodOptions)(nil), // 2: google.protobuf.MethodOptions
-}
-var file_events_proto_depIdxs = []int32{
- 0, // 0: chainguard.annotations.EventAttributes.audience:type_name -> chainguard.annotations.EventAttributes.Audience
- 2, // 1: chainguard.annotations.events:extendee -> google.protobuf.MethodOptions
- 1, // 2: chainguard.annotations.events:type_name -> chainguard.annotations.EventAttributes
- 3, // [3:3] is the sub-list for method output_type
- 3, // [3:3] is the sub-list for method input_type
- 2, // [2:3] is the sub-list for extension type_name
- 1, // [1:2] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_events_proto_init() }
-func file_events_proto_init() {
- if File_events_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EventAttributes); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_events_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 1,
- NumExtensions: 1,
- NumServices: 0,
- },
- GoTypes: file_events_proto_goTypes,
- DependencyIndexes: file_events_proto_depIdxs,
- EnumInfos: file_events_proto_enumTypes,
- MessageInfos: file_events_proto_msgTypes,
- ExtensionInfos: file_events_proto_extTypes,
- }.Build()
- File_events_proto = out.File
- file_events_proto_rawDesc = nil
- file_events_proto_goTypes = nil
- file_events_proto_depIdxs = nil
-}
diff --git a/proto/annotations/events.proto b/proto/annotations/events.proto
deleted file mode 100644
index f2d0839f..00000000
--- a/proto/annotations/events.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/annotations";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.annotations";
-option java_outer_classname = "AnnotationsProto";
-
-package chainguard.annotations;
-
-import "google/protobuf/descriptor.proto";
-
-extend google.protobuf.MethodOptions {
- EventAttributes events = 401635080; // randomly chosen
-}
-
-message EventAttributes {
- // type is the cloudevent type to use for the outbound event.
- string type = 1;
- // extensions lists which extensions
- repeated string extensions = 2;
- enum Audience {
- // intended for inside the bounds of the platform.
- INTERNAL = 0;
- // allowed to be sent outside the platform.
- CUSTOMER = 1;
- }
- // audience is the intended audience for the event.
- Audience audience = 3;
-}
diff --git a/proto/capabilities/capabilities.go b/proto/capabilities/capabilities.go
deleted file mode 100644
index 71e89e01..00000000
--- a/proto/capabilities/capabilities.go
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package capabilities
-
-import (
- "context"
- "encoding/json"
- "fmt"
- "io"
- "sort"
- "strings"
- "sync"
-
- "github.com/bits-and-blooms/bitset"
- "github.com/chainguard-dev/clog"
- "go.uber.org/zap"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/types/descriptorpb"
-)
-
-var (
- // Map of stringified name to capability. Initialized with initNameCapabilityMap()
- nameCapabilityMap = make(map[string]Capability, len(Capability_value))
- ponce sync.Once
- perror error
-)
-
-// Names returns a slice of all capabilities Stringify'd, sans UNKNOWN.
-func Names() []string {
- all := make([]string, 0, len(Capability_name)-1) // One less, we don't want UNKNOWN
- for n := range Capability_name {
- if Capability(n) == Capability_UNKNOWN {
- continue
- }
- sc, err := Stringify(Capability(n))
- if err != nil {
- // This should never happen!
- continue
- }
- all = append(all, sc)
- }
- return all
-}
-
-func Stringify(cap Capability) (string, error) {
- evd := cap.Descriptor().Values().ByNumber(cap.Number())
- if evd == nil {
- return "", status.Errorf(codes.Internal, "capability has no descriptor: %v", cap)
- }
- opt := evd.Options()
- if opt == nil {
- return "", status.Errorf(codes.Internal, "capability has no options: %v", cap)
- }
- evo := opt.(*descriptorpb.EnumValueOptions)
- name := proto.GetExtension(evo, E_Name)
- if name == nil {
- return "", status.Errorf(codes.Internal, "capability is missing the name option: %v", cap)
- }
- return name.(string), nil
-}
-
-func StringifyAll(caps []Capability) ([]string, error) {
- scs := make([]string, 0, len(caps))
- for _, cap := range caps {
- sc, err := Stringify(cap)
- if err != nil {
- return nil, err
- }
- scs = append(scs, sc)
- }
- return scs, nil
-}
-
-func Parse(name string) (Capability, error) {
- ponce.Do(func() {
- // Populate nameCapabilityMap
- for cap := range Capability_name {
- scap, perror := Stringify(Capability(cap))
- if perror == nil {
- nameCapabilityMap[scap] = Capability(cap)
- } else {
- clog.FromContext(context.Background()).Errorf("Failed to stringify capability %d, error: %v",
- cap, zap.Error(perror))
- }
- }
- })
-
- if perror != nil {
- return Capability_UNKNOWN, perror
- }
- return nameCapabilityMap[name], nil
-}
-
-func Bitify(cap Capability) (uint32, error) {
- evd := cap.Descriptor().Values().ByNumber(cap.Number())
- if evd == nil {
- return 0, status.Errorf(codes.Internal, "capability has no descriptor: %v", cap)
- }
- opt := evd.Options()
- if opt == nil {
- return 0, status.Errorf(codes.Internal, "capability has no options: %v", cap)
- }
- evo := opt.(*descriptorpb.EnumValueOptions)
- name := proto.GetExtension(evo, E_Bit)
- if name == nil {
- return 0, status.Errorf(codes.Internal, "capability is missing the bit option: %v", cap)
- }
- return name.(uint32), nil
-}
-
-// Set performs efficient encoding of a list of capabilities.
-type Set []Capability
-
-func (s Set) String() string {
- caps := make([]string, 0, len(s))
- for _, c := range s {
- st, err := Stringify(c)
- if err != nil {
- st = fmt.Sprintf("[ERROR(cap=%d)", c)
- }
- caps = append(caps, st)
- }
- sort.Strings(caps)
- return strings.Join(caps, ",")
-}
-
-// MarshalJSON implements json.Marshaler
-func (s Set) MarshalJSON() ([]byte, error) {
- bs := bitset.New(50)
- for _, cap := range s {
- b, err := Bitify(cap)
- if err != nil {
- return nil, err
- }
- bs.Set(uint(b))
- }
- return bs.MarshalJSON()
-}
-
-// UnmarshalJSON implements json.Unmarshaler
-func (s *Set) UnmarshalJSON(b []byte) error {
- switch {
- case len(b) == 0:
- return io.EOF
-
- case b[0] == '[':
- // Legacy decoding!
- var caps []Capability
- if err := json.Unmarshal(b, &caps); err != nil {
- return err
- }
- for _, cap := range caps {
- *s = append(*s, cap)
- }
- return nil
-
- default:
- // Compact encoding
- var bs bitset.BitSet
- if err := json.Unmarshal(b, &bs); err != nil {
- return err
- }
- for i := range Capability_name {
- cap := Capability(i) //nolint: revive
- if cap == Capability_UNKNOWN {
- continue
- }
- bit, err := Bitify(cap)
- if err != nil {
- return err
- }
- if bs.Test(uint(bit)) {
- *s = append(*s, cap)
- // This ensures that our unit testing checks that no two
- // enumeration values are assigned the same bit.
- bs.Clear(uint(bit))
- }
- }
- sort.Slice(*s, func(i int, j int) bool {
- return (*s)[i] < (*s)[j]
- })
- return nil
- }
-}
diff --git a/proto/capabilities/capabilities.pb.go b/proto/capabilities/capabilities.pb.go
deleted file mode 100644
index 69e77d49..00000000
--- a/proto/capabilities/capabilities.pb.go
+++ /dev/null
@@ -1,669 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: capabilities.proto
-
-package capabilities
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- descriptorpb "google.golang.org/protobuf/types/descriptorpb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-// Capability is an enumeration of the Chainguard IAM capabilities.
-type Capability int32
-
-const (
- Capability_UNKNOWN Capability = 0
- Capability_CAP_IAM_GROUPS_CREATE Capability = 101
- Capability_CAP_IAM_GROUPS_UPDATE Capability = 102
- Capability_CAP_IAM_GROUPS_LIST Capability = 103
- Capability_CAP_IAM_GROUPS_DELETE Capability = 104
- Capability_CAP_IAM_GROUP_INVITES_CREATE Capability = 201
- Capability_CAP_IAM_GROUP_INVITES_LIST Capability = 203
- Capability_CAP_IAM_GROUP_INVITES_DELETE Capability = 204
- Capability_CAP_IAM_ROLES_CREATE Capability = 301
- Capability_CAP_IAM_ROLES_UPDATE Capability = 302
- Capability_CAP_IAM_ROLES_LIST Capability = 303
- Capability_CAP_IAM_ROLES_DELETE Capability = 304
- Capability_CAP_IAM_ROLE_BINDINGS_CREATE Capability = 401
- Capability_CAP_IAM_ROLE_BINDINGS_UPDATE Capability = 402
- Capability_CAP_IAM_ROLE_BINDINGS_LIST Capability = 403
- Capability_CAP_IAM_ROLE_BINDINGS_DELETE Capability = 404
- Capability_CAP_TENANT_CLUSTERS_CREATE Capability = 501
- Capability_CAP_TENANT_CLUSTERS_UPDATE Capability = 502
- Capability_CAP_TENANT_CLUSTERS_LIST Capability = 503
- Capability_CAP_TENANT_CLUSTERS_DELETE Capability = 504
- Capability_CAP_TENANT_CLUSTERS_DISCOVER Capability = 505
- Capability_CAP_TENANT_RECORDS_LIST Capability = 603
- Capability_CAP_TENANT_RECORD_CONTEXTS_LIST Capability = 613
- Capability_CAP_TENANT_RECORD_SIGNATURES_LIST Capability = 623
- Capability_CAP_TENANT_RECORD_POLICY_RESULTS_LIST Capability = 633
- Capability_CAP_TENANT_RISKS_LIST Capability = 640
- Capability_CAP_TENANT_SBOMS_LIST Capability = 650
- Capability_CAP_TENANT_VULN_REPORTS_LIST Capability = 660
- Capability_CAP_TENANT_ATTESTATIONS_LIST Capability = 670
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE Capability = 701
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE Capability = 702
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST Capability = 703
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE Capability = 704
- Capability_CAP_IAM_POLICY_CREATE Capability = 801
- Capability_CAP_IAM_POLICY_UPDATE Capability = 802
- Capability_CAP_IAM_POLICY_LIST Capability = 803
- Capability_CAP_IAM_POLICY_DELETE Capability = 804
- Capability_CAP_IAM_IDENTITY_CREATE Capability = 901
- Capability_CAP_IAM_IDENTITY_UPDATE Capability = 902
- Capability_CAP_IAM_IDENTITY_LIST Capability = 903
- Capability_CAP_IAM_IDENTITY_DELETE Capability = 904
- Capability_CAP_TENANT_NODES_LIST Capability = 1003
- Capability_CAP_TENANT_NAMESPACES_LIST Capability = 1103
- Capability_CAP_TENANT_WORKLOADS_LIST Capability = 1203
- Capability_CAP_IAM_IDENTITY_PROVIDERS_CREATE Capability = 1301
- Capability_CAP_IAM_IDENTITY_PROVIDERS_UPDATE Capability = 1302
- Capability_CAP_IAM_IDENTITY_PROVIDERS_LIST Capability = 1303
- Capability_CAP_IAM_IDENTITY_PROVIDERS_DELETE Capability = 1304
- Capability_CAP_EVENTS_SUBSCRIPTION_CREATE Capability = 1501
- Capability_CAP_EVENTS_SUBSCRIPTION_UPDATE Capability = 1502
- Capability_CAP_EVENTS_SUBSCRIPTION_LIST Capability = 1503
- Capability_CAP_EVENTS_SUBSCRIPTION_DELETE Capability = 1504
- // TODO(jason): Remove these coarse-grained capabilities after they're removed from the roles.
- Capability_CAP_REGISTRY_PULL Capability = 1601 // Can read tags, blobs, manifests.
- Capability_CAP_REGISTRY_PUSH Capability = 1602 // Can create and update tags, blobs, manifests.
- Capability_CAP_REPO_CREATE Capability = 1603
- Capability_CAP_REPO_UPDATE Capability = 1604
- Capability_CAP_REPO_LIST Capability = 1605
- Capability_CAP_REPO_DELETE Capability = 1606
- Capability_CAP_MANIFEST_CREATE Capability = 1607
- Capability_CAP_MANIFEST_UPDATE Capability = 1608
- Capability_CAP_MANIFEST_LIST Capability = 1609
- Capability_CAP_MANIFEST_DELETE Capability = 1610
- Capability_CAP_TAG_CREATE Capability = 1611
- Capability_CAP_TAG_UPDATE Capability = 1612
- Capability_CAP_TAG_LIST Capability = 1613
- Capability_CAP_TAG_DELETE Capability = 1614
- Capability_CAP_MANIFEST_METADATA_LIST Capability = 1615
- Capability_CAP_SIGSTORE_CREATE Capability = 1701
- Capability_CAP_SIGSTORE_UPDATE Capability = 1702
- Capability_CAP_SIGSTORE_LIST Capability = 1703
- Capability_CAP_SIGSTORE_DELETE Capability = 1704
- Capability_CAP_SIGSTORE_CERTIFICATE_CREATE Capability = 1705
- // This is orthogonal enough that we should leave
- // it somewhat separate, so add new capabilities above.
- // TODO(mattmoor): Think about whether we can encode specific
- // controller capabilities into our access control here?
- // e.g. could each logical controller/webhook be its own
- // capability?
- Capability_CAP_GULFSTREAM Capability = 10000
-)
-
-// Enum value maps for Capability.
-var (
- Capability_name = map[int32]string{
- 0: "UNKNOWN",
- 101: "CAP_IAM_GROUPS_CREATE",
- 102: "CAP_IAM_GROUPS_UPDATE",
- 103: "CAP_IAM_GROUPS_LIST",
- 104: "CAP_IAM_GROUPS_DELETE",
- 201: "CAP_IAM_GROUP_INVITES_CREATE",
- 203: "CAP_IAM_GROUP_INVITES_LIST",
- 204: "CAP_IAM_GROUP_INVITES_DELETE",
- 301: "CAP_IAM_ROLES_CREATE",
- 302: "CAP_IAM_ROLES_UPDATE",
- 303: "CAP_IAM_ROLES_LIST",
- 304: "CAP_IAM_ROLES_DELETE",
- 401: "CAP_IAM_ROLE_BINDINGS_CREATE",
- 402: "CAP_IAM_ROLE_BINDINGS_UPDATE",
- 403: "CAP_IAM_ROLE_BINDINGS_LIST",
- 404: "CAP_IAM_ROLE_BINDINGS_DELETE",
- 501: "CAP_TENANT_CLUSTERS_CREATE",
- 502: "CAP_TENANT_CLUSTERS_UPDATE",
- 503: "CAP_TENANT_CLUSTERS_LIST",
- 504: "CAP_TENANT_CLUSTERS_DELETE",
- 505: "CAP_TENANT_CLUSTERS_DISCOVER",
- 603: "CAP_TENANT_RECORDS_LIST",
- 613: "CAP_TENANT_RECORD_CONTEXTS_LIST",
- 623: "CAP_TENANT_RECORD_SIGNATURES_LIST",
- 633: "CAP_TENANT_RECORD_POLICY_RESULTS_LIST",
- 640: "CAP_TENANT_RISKS_LIST",
- 650: "CAP_TENANT_SBOMS_LIST",
- 660: "CAP_TENANT_VULN_REPORTS_LIST",
- 670: "CAP_TENANT_ATTESTATIONS_LIST",
- 701: "CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE",
- 702: "CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE",
- 703: "CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST",
- 704: "CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE",
- 801: "CAP_IAM_POLICY_CREATE",
- 802: "CAP_IAM_POLICY_UPDATE",
- 803: "CAP_IAM_POLICY_LIST",
- 804: "CAP_IAM_POLICY_DELETE",
- 901: "CAP_IAM_IDENTITY_CREATE",
- 902: "CAP_IAM_IDENTITY_UPDATE",
- 903: "CAP_IAM_IDENTITY_LIST",
- 904: "CAP_IAM_IDENTITY_DELETE",
- 1003: "CAP_TENANT_NODES_LIST",
- 1103: "CAP_TENANT_NAMESPACES_LIST",
- 1203: "CAP_TENANT_WORKLOADS_LIST",
- 1301: "CAP_IAM_IDENTITY_PROVIDERS_CREATE",
- 1302: "CAP_IAM_IDENTITY_PROVIDERS_UPDATE",
- 1303: "CAP_IAM_IDENTITY_PROVIDERS_LIST",
- 1304: "CAP_IAM_IDENTITY_PROVIDERS_DELETE",
- 1501: "CAP_EVENTS_SUBSCRIPTION_CREATE",
- 1502: "CAP_EVENTS_SUBSCRIPTION_UPDATE",
- 1503: "CAP_EVENTS_SUBSCRIPTION_LIST",
- 1504: "CAP_EVENTS_SUBSCRIPTION_DELETE",
- 1601: "CAP_REGISTRY_PULL",
- 1602: "CAP_REGISTRY_PUSH",
- 1603: "CAP_REPO_CREATE",
- 1604: "CAP_REPO_UPDATE",
- 1605: "CAP_REPO_LIST",
- 1606: "CAP_REPO_DELETE",
- 1607: "CAP_MANIFEST_CREATE",
- 1608: "CAP_MANIFEST_UPDATE",
- 1609: "CAP_MANIFEST_LIST",
- 1610: "CAP_MANIFEST_DELETE",
- 1611: "CAP_TAG_CREATE",
- 1612: "CAP_TAG_UPDATE",
- 1613: "CAP_TAG_LIST",
- 1614: "CAP_TAG_DELETE",
- 1615: "CAP_MANIFEST_METADATA_LIST",
- 1701: "CAP_SIGSTORE_CREATE",
- 1702: "CAP_SIGSTORE_UPDATE",
- 1703: "CAP_SIGSTORE_LIST",
- 1704: "CAP_SIGSTORE_DELETE",
- 1705: "CAP_SIGSTORE_CERTIFICATE_CREATE",
- 10000: "CAP_GULFSTREAM",
- }
- Capability_value = map[string]int32{
- "UNKNOWN": 0,
- "CAP_IAM_GROUPS_CREATE": 101,
- "CAP_IAM_GROUPS_UPDATE": 102,
- "CAP_IAM_GROUPS_LIST": 103,
- "CAP_IAM_GROUPS_DELETE": 104,
- "CAP_IAM_GROUP_INVITES_CREATE": 201,
- "CAP_IAM_GROUP_INVITES_LIST": 203,
- "CAP_IAM_GROUP_INVITES_DELETE": 204,
- "CAP_IAM_ROLES_CREATE": 301,
- "CAP_IAM_ROLES_UPDATE": 302,
- "CAP_IAM_ROLES_LIST": 303,
- "CAP_IAM_ROLES_DELETE": 304,
- "CAP_IAM_ROLE_BINDINGS_CREATE": 401,
- "CAP_IAM_ROLE_BINDINGS_UPDATE": 402,
- "CAP_IAM_ROLE_BINDINGS_LIST": 403,
- "CAP_IAM_ROLE_BINDINGS_DELETE": 404,
- "CAP_TENANT_CLUSTERS_CREATE": 501,
- "CAP_TENANT_CLUSTERS_UPDATE": 502,
- "CAP_TENANT_CLUSTERS_LIST": 503,
- "CAP_TENANT_CLUSTERS_DELETE": 504,
- "CAP_TENANT_CLUSTERS_DISCOVER": 505,
- "CAP_TENANT_RECORDS_LIST": 603,
- "CAP_TENANT_RECORD_CONTEXTS_LIST": 613,
- "CAP_TENANT_RECORD_SIGNATURES_LIST": 623,
- "CAP_TENANT_RECORD_POLICY_RESULTS_LIST": 633,
- "CAP_TENANT_RISKS_LIST": 640,
- "CAP_TENANT_SBOMS_LIST": 650,
- "CAP_TENANT_VULN_REPORTS_LIST": 660,
- "CAP_TENANT_ATTESTATIONS_LIST": 670,
- "CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE": 701,
- "CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE": 702,
- "CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST": 703,
- "CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE": 704,
- "CAP_IAM_POLICY_CREATE": 801,
- "CAP_IAM_POLICY_UPDATE": 802,
- "CAP_IAM_POLICY_LIST": 803,
- "CAP_IAM_POLICY_DELETE": 804,
- "CAP_IAM_IDENTITY_CREATE": 901,
- "CAP_IAM_IDENTITY_UPDATE": 902,
- "CAP_IAM_IDENTITY_LIST": 903,
- "CAP_IAM_IDENTITY_DELETE": 904,
- "CAP_TENANT_NODES_LIST": 1003,
- "CAP_TENANT_NAMESPACES_LIST": 1103,
- "CAP_TENANT_WORKLOADS_LIST": 1203,
- "CAP_IAM_IDENTITY_PROVIDERS_CREATE": 1301,
- "CAP_IAM_IDENTITY_PROVIDERS_UPDATE": 1302,
- "CAP_IAM_IDENTITY_PROVIDERS_LIST": 1303,
- "CAP_IAM_IDENTITY_PROVIDERS_DELETE": 1304,
- "CAP_EVENTS_SUBSCRIPTION_CREATE": 1501,
- "CAP_EVENTS_SUBSCRIPTION_UPDATE": 1502,
- "CAP_EVENTS_SUBSCRIPTION_LIST": 1503,
- "CAP_EVENTS_SUBSCRIPTION_DELETE": 1504,
- "CAP_REGISTRY_PULL": 1601,
- "CAP_REGISTRY_PUSH": 1602,
- "CAP_REPO_CREATE": 1603,
- "CAP_REPO_UPDATE": 1604,
- "CAP_REPO_LIST": 1605,
- "CAP_REPO_DELETE": 1606,
- "CAP_MANIFEST_CREATE": 1607,
- "CAP_MANIFEST_UPDATE": 1608,
- "CAP_MANIFEST_LIST": 1609,
- "CAP_MANIFEST_DELETE": 1610,
- "CAP_TAG_CREATE": 1611,
- "CAP_TAG_UPDATE": 1612,
- "CAP_TAG_LIST": 1613,
- "CAP_TAG_DELETE": 1614,
- "CAP_MANIFEST_METADATA_LIST": 1615,
- "CAP_SIGSTORE_CREATE": 1701,
- "CAP_SIGSTORE_UPDATE": 1702,
- "CAP_SIGSTORE_LIST": 1703,
- "CAP_SIGSTORE_DELETE": 1704,
- "CAP_SIGSTORE_CERTIFICATE_CREATE": 1705,
- "CAP_GULFSTREAM": 10000,
- }
-)
-
-func (x Capability) Enum() *Capability {
- p := new(Capability)
- *p = x
- return p
-}
-
-func (x Capability) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Capability) Descriptor() protoreflect.EnumDescriptor {
- return file_capabilities_proto_enumTypes[0].Descriptor()
-}
-
-func (Capability) Type() protoreflect.EnumType {
- return &file_capabilities_proto_enumTypes[0]
-}
-
-func (x Capability) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Capability.Descriptor instead.
-func (Capability) EnumDescriptor() ([]byte, []int) {
- return file_capabilities_proto_rawDescGZIP(), []int{0}
-}
-
-var file_capabilities_proto_extTypes = []protoimpl.ExtensionInfo{
- {
- ExtendedType: (*descriptorpb.EnumValueOptions)(nil),
- ExtensionType: (*string)(nil),
- Field: 189350643,
- Name: "chainguard.capabilities.name",
- Tag: "bytes,189350643,opt,name=name",
- Filename: "capabilities.proto",
- },
- {
- ExtendedType: (*descriptorpb.EnumValueOptions)(nil),
- ExtensionType: (*uint32)(nil),
- Field: 20221109,
- Name: "chainguard.capabilities.bit",
- Tag: "varint,20221109,opt,name=bit",
- Filename: "capabilities.proto",
- },
-}
-
-// Extension fields to descriptorpb.EnumValueOptions.
-var (
- // This decorates our capability enumeration values with
- // the friendly name to show to humans.
- //
- // optional string name = 189350643;
- E_Name = &file_capabilities_proto_extTypes[0]
- // This decorates our capability enumeration values with
- // a bit index enabling compacted encodings.
- //
- // optional uint32 bit = 20221109;
- E_Bit = &file_capabilities_proto_extTypes[1]
-)
-
-var File_capabilities_proto protoreflect.FileDescriptor
-
-var file_capabilities_proto_rawDesc = []byte{
- 0x0a, 0x12, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x20, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,
- 0xd7, 0x21, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x15, 0x43,
- 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x43, 0x52,
- 0x45, 0x41, 0x54, 0x45, 0x10, 0x65, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x01, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55,
- 0x50, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x66, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
- 0x4d, 0x02, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
- 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x67, 0x1a, 0x16,
- 0xa8, 0xcb, 0x91, 0x4d, 0x03, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41,
- 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0x68, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x04, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x43,
- 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x56,
- 0x49, 0x54, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc9, 0x01, 0x1a, 0x1f,
- 0xa8, 0xcb, 0x91, 0x4d, 0x05, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
- 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
- 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcb, 0x01,
- 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d, 0x06, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
- 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
- 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0xcc, 0x01, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x07, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
- 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xad, 0x02, 0x1a, 0x17,
- 0xa8, 0xcb, 0x91, 0x4d, 0x08, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73,
- 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49,
- 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10,
- 0xae, 0x02, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d, 0x09, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72,
- 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x43,
- 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0xaf, 0x02, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x0a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x43,
- 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c,
- 0x45, 0x54, 0x45, 0x10, 0xb0, 0x02, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d, 0x0b, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
- 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f,
- 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10,
- 0x91, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x0c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72,
- 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
- 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0x92, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x0d, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49,
- 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x93, 0x03, 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d, 0x0e, 0x9a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49,
- 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
- 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x94, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d,
- 0x0f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x43,
- 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
- 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xf5, 0x03, 0x1a, 0x1a, 0xa8, 0xcb,
- 0x91, 0x4d, 0x10, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f,
- 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f,
- 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xf6, 0x03, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x11,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
- 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0xf7, 0x03, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x12, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3b,
- 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55,
- 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xf8, 0x03, 0x1a,
- 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x13, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x43,
- 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
- 0x52, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0xf9, 0x03, 0x1a, 0x1c,
- 0xa8, 0xcb, 0x91, 0x4d, 0x33, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x17,
- 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52,
- 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x04, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d,
- 0x14, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6c,
- 0x69, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e,
- 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54,
- 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe5, 0x04, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x30,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e,
- 0x74, 0x65, 0x78, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x21, 0x43, 0x41,
- 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f,
- 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
- 0xef, 0x04, 0x1a, 0x21, 0xa8, 0xcb, 0x91, 0x4d, 0x31, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x72,
- 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
- 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x25, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
- 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43,
- 0x59, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf9,
- 0x04, 0x1a, 0x25, 0xa8, 0xcb, 0x91, 0x4d, 0x32, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1a, 0x72, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f,
- 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0x80, 0x05, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x44, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x43,
- 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x53, 0x42, 0x4f, 0x4d, 0x53, 0x5f,
- 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8a, 0x05, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x45, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0a, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3f,
- 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x56, 0x55, 0x4c,
- 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x94,
- 0x05, 0x1a, 0x1c, 0xa8, 0xcb, 0x91, 0x4d, 0x46, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x76, 0x75,
- 0x6c, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
- 0x3f, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x54,
- 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
- 0x9e, 0x05, 0x1a, 0x1c, 0xa8, 0xcb, 0x91, 0x4d, 0x47, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x61,
- 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74,
- 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43, 0x43, 0x4f,
- 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53,
- 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xbd, 0x05, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d,
- 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61,
- 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
- 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xbe, 0x05, 0x1a, 0x26, 0xa8, 0xcb,
- 0x91, 0x4d, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
- 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbf, 0x05, 0x1a, 0x24, 0xa8, 0xcb,
- 0x91, 0x4d, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69,
- 0x73, 0x74, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
- 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc0, 0x05, 0x1a, 0x26, 0xa8, 0xcb,
- 0x91, 0x4d, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
- 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa1, 0x06,
- 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x19, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41,
- 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0xa2, 0x06, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x1a, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x12, 0x30, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49,
- 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa3, 0x06, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d,
- 0x1b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6c, 0x69,
- 0x73, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f,
- 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa4, 0x06, 0x1a, 0x18,
- 0xa8, 0xcb, 0x91, 0x4d, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f,
- 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x52, 0x45,
- 0x41, 0x54, 0x45, 0x10, 0x85, 0x07, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x1d, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
- 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x86, 0x07,
- 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x1e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15,
- 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x87, 0x07, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x1f, 0x9a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x6c, 0x69,
- 0x73, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
- 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x88, 0x07,
- 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x20, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x15,
- 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x07, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x21, 0x9a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
- 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x41,
- 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x08,
- 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x22, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x19,
- 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
- 0x4f, 0x41, 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb3, 0x09, 0x1a, 0x19, 0xa8, 0xcb,
- 0x91, 0x4d, 0x23, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
- 0x64, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49,
- 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56,
- 0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x95, 0x0a, 0x1a,
- 0x24, 0xa8, 0xcb, 0x91, 0x4d, 0x34, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x63,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
- 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44,
- 0x45, 0x52, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x96, 0x0a, 0x1a, 0x24, 0xa8,
- 0xcb, 0x91, 0x4d, 0x35, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49,
- 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52,
- 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x97, 0x0a, 0x1a, 0x22, 0xa8, 0xcb, 0x91, 0x4d, 0x36,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a,
- 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54,
- 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45,
- 0x54, 0x45, 0x10, 0x98, 0x0a, 0x1a, 0x24, 0xa8, 0xcb, 0x91, 0x4d, 0x37, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x1e, 0x43,
- 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
- 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x0b,
- 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f,
- 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x25, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x45,
- 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdf, 0x0b, 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d,
- 0x26, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50,
- 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50,
- 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xe0, 0x0b, 0x1a, 0x1f,
- 0xa8, 0xcb, 0x91, 0x4d, 0x27, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
- 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f,
- 0x50, 0x55, 0x4c, 0x4c, 0x10, 0xc1, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x28, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x6c,
- 0x6c, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52,
- 0x59, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0xc2, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x29,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70,
- 0x75, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f,
- 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc3, 0x0c, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x38,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xc4, 0x0c, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x39, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
- 0x28, 0x0a, 0x0d, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x4c, 0x49, 0x53, 0x54,
- 0x10, 0xc5, 0x0c, 0x1a, 0x14, 0xa8, 0xcb, 0x91, 0x4d, 0x3a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x09,
- 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50,
- 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc6, 0x0c, 0x1a,
- 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x3b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d,
- 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc7,
- 0x0c, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a,
- 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xc8, 0x0c, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3d, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46,
- 0x45, 0x53, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc9, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
- 0x4d, 0x3e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e,
- 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xca, 0x0c, 0x1a,
- 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
- 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xcb, 0x0c,
- 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x40, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67,
- 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x54,
- 0x41, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xcc, 0x0c, 0x1a, 0x15, 0xa8, 0xcb,
- 0x91, 0x4d, 0x41, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4c,
- 0x49, 0x53, 0x54, 0x10, 0xcd, 0x0c, 0x1a, 0x13, 0xa8, 0xcb, 0x91, 0x4d, 0x42, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x08, 0x74, 0x61, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
- 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xce, 0x0c,
- 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x43, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x4d,
- 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x0c, 0x1a, 0x21, 0xa8, 0xcb, 0x91, 0x4d, 0x48, 0x9a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43,
- 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41,
- 0x54, 0x45, 0x10, 0xa5, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52,
- 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91,
- 0x4d, 0x2b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
- 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53,
- 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a,
- 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x2c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73,
- 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50,
- 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
- 0x10, 0xa8, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f,
- 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
- 0x4c, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f,
- 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41,
- 0x54, 0x45, 0x10, 0xa9, 0x0d, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x1b, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a,
- 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x55, 0x4c, 0x46, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10,
- 0x90, 0x4e, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67,
- 0x75, 0x6c, 0x66, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf3, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x3a, 0x36, 0x0a, 0x03, 0x62, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75,
- 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x99,
- 0xd2, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x74, 0x42, 0x5d, 0x0a, 0x1f, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
- 0x6b, 0x2e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x11,
- 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x61,
- 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_capabilities_proto_rawDescOnce sync.Once
- file_capabilities_proto_rawDescData = file_capabilities_proto_rawDesc
-)
-
-func file_capabilities_proto_rawDescGZIP() []byte {
- file_capabilities_proto_rawDescOnce.Do(func() {
- file_capabilities_proto_rawDescData = protoimpl.X.CompressGZIP(file_capabilities_proto_rawDescData)
- })
- return file_capabilities_proto_rawDescData
-}
-
-var file_capabilities_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_capabilities_proto_goTypes = []interface{}{
- (Capability)(0), // 0: chainguard.capabilities.Capability
- (*descriptorpb.EnumValueOptions)(nil), // 1: google.protobuf.EnumValueOptions
-}
-var file_capabilities_proto_depIdxs = []int32{
- 1, // 0: chainguard.capabilities.name:extendee -> google.protobuf.EnumValueOptions
- 1, // 1: chainguard.capabilities.bit:extendee -> google.protobuf.EnumValueOptions
- 2, // [2:2] is the sub-list for method output_type
- 2, // [2:2] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 0, // [0:2] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_capabilities_proto_init() }
-func file_capabilities_proto_init() {
- if File_capabilities_proto != nil {
- return
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_capabilities_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 0,
- NumExtensions: 2,
- NumServices: 0,
- },
- GoTypes: file_capabilities_proto_goTypes,
- DependencyIndexes: file_capabilities_proto_depIdxs,
- EnumInfos: file_capabilities_proto_enumTypes,
- ExtensionInfos: file_capabilities_proto_extTypes,
- }.Build()
- File_capabilities_proto = out.File
- file_capabilities_proto_rawDesc = nil
- file_capabilities_proto_goTypes = nil
- file_capabilities_proto_depIdxs = nil
-}
diff --git a/proto/capabilities/capabilities.proto b/proto/capabilities/capabilities.proto
deleted file mode 100644
index 40ad9cb9..00000000
--- a/proto/capabilities/capabilities.proto
+++ /dev/null
@@ -1,139 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/capabilities";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.capabilities";
-option java_outer_classname = "CapabilitiesProto";
-
-package chainguard.capabilities;
-
-import "google/protobuf/descriptor.proto";
-
-extend google.protobuf.EnumValueOptions {
- // This decorates our capability enumeration values with
- // the friendly name to show to humans.
- string name = 189350643;
-
- // This decorates our capability enumeration values with
- // a bit index enabling compacted encodings.
- uint32 bit = 20221109;
-}
-
-// Capability is an enumeration of the Chainguard IAM capabilities.
-enum Capability {
- UNKNOWN = 0;
-
- CAP_IAM_GROUPS_CREATE = 101 [(name) = "groups.create", (bit) = 1];
- CAP_IAM_GROUPS_UPDATE = 102 [(name) = "groups.update", (bit) = 2];
- CAP_IAM_GROUPS_LIST = 103 [(name) = "groups.list", (bit) = 3];
- CAP_IAM_GROUPS_DELETE = 104 [(name) = "groups.delete", (bit) = 4];
-
- CAP_IAM_GROUP_INVITES_CREATE = 201 [(name) = "group_invites.create", (bit) = 5];
- CAP_IAM_GROUP_INVITES_LIST = 203 [(name) = "group_invites.list", (bit) = 6];
- CAP_IAM_GROUP_INVITES_DELETE = 204 [(name) = "group_invites.delete", (bit) = 7];
-
- CAP_IAM_ROLES_CREATE = 301 [(name) = "roles.create", (bit) = 8];
- CAP_IAM_ROLES_UPDATE = 302 [(name) = "roles.update", (bit) = 9];
- CAP_IAM_ROLES_LIST = 303 [(name) = "roles.list", (bit) = 10];
- CAP_IAM_ROLES_DELETE = 304 [(name) = "roles.delete", (bit) = 11];
-
- CAP_IAM_ROLE_BINDINGS_CREATE = 401 [(name) = "role_bindings.create", (bit) = 12];
- CAP_IAM_ROLE_BINDINGS_UPDATE = 402 [(name) = "role_bindings.update", (bit) = 13];
- CAP_IAM_ROLE_BINDINGS_LIST = 403 [(name) = "role_bindings.list", (bit) = 14];
- CAP_IAM_ROLE_BINDINGS_DELETE = 404 [(name) = "role_bindings.delete", (bit) = 15];
-
- CAP_TENANT_CLUSTERS_CREATE = 501 [(name) = "clusters.create", (bit) = 16];
- CAP_TENANT_CLUSTERS_UPDATE = 502 [(name) = "clusters.update", (bit) = 17];
- CAP_TENANT_CLUSTERS_LIST = 503 [(name) = "clusters.list", (bit) = 18];
- CAP_TENANT_CLUSTERS_DELETE = 504 [(name) = "clusters.delete", (bit) = 19];
- CAP_TENANT_CLUSTERS_DISCOVER = 505 [(name) = "clusters.discover", (bit) = 51];
-
- CAP_TENANT_RECORDS_LIST = 603 [(name) = "records.list", (bit) = 20];
- CAP_TENANT_RECORD_CONTEXTS_LIST = 613 [(name) = "record_contexts.list", (bit) = 48];
- CAP_TENANT_RECORD_SIGNATURES_LIST = 623 [(name) = "record_signatures.list", (bit) = 49];
- CAP_TENANT_RECORD_POLICY_RESULTS_LIST = 633 [(name) = "record_policy_results.list", (bit) = 50];
-
- CAP_TENANT_RISKS_LIST = 640 [(name) = "risks.list", (bit) = 68];
-
- CAP_TENANT_SBOMS_LIST = 650 [(name) = "sboms.list", (bit) = 69];
-
- CAP_TENANT_VULN_REPORTS_LIST = 660 [(name) = "vuln_reports.list", (bit) = 70];
-
- CAP_TENANT_ATTESTATIONS_LIST = 670 [(name) = "attestations.list", (bit) = 71];
-
- CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE = 701 [(name) = "account_associations.create", (bit) = 21];
- CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE = 702 [(name) = "account_associations.update", (bit) = 22];
- CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST = 703 [(name) = "account_associations.list", (bit) = 23];
- CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE = 704 [(name) = "account_associations.delete", (bit) = 24];
-
- CAP_IAM_POLICY_CREATE = 801 [(name) = "policy.create", (bit) = 25];
- CAP_IAM_POLICY_UPDATE = 802 [(name) = "policy.update", (bit) = 26];
- CAP_IAM_POLICY_LIST = 803 [(name) = "policy.list", (bit) = 27];
- CAP_IAM_POLICY_DELETE = 804 [(name) = "policy.delete", (bit) = 28];
-
- CAP_IAM_IDENTITY_CREATE = 901 [(name) = "identity.create", (bit) = 29];
- CAP_IAM_IDENTITY_UPDATE = 902 [(name) = "identity.update", (bit) = 30];
- CAP_IAM_IDENTITY_LIST = 903 [(name) = "identity.list", (bit) = 31];
- CAP_IAM_IDENTITY_DELETE = 904 [(name) = "identity.delete", (bit) = 32];
-
- CAP_TENANT_NODES_LIST = 1003 [(name) = "nodes.list", (bit) = 33];
-
- CAP_TENANT_NAMESPACES_LIST = 1103 [(name) = "namespaces.list", (bit) = 34];
-
- CAP_TENANT_WORKLOADS_LIST = 1203 [(name) = "workloads.list", (bit) = 35];
-
-
- CAP_IAM_IDENTITY_PROVIDERS_CREATE = 1301 [(name) = "identity_providers.create", (bit) = 52];
- CAP_IAM_IDENTITY_PROVIDERS_UPDATE = 1302 [(name) = "identity_providers.update", (bit) = 53];
- CAP_IAM_IDENTITY_PROVIDERS_LIST = 1303 [(name) = "identity_providers.list", (bit) = 54];
- CAP_IAM_IDENTITY_PROVIDERS_DELETE = 1304 [(name) = "identity_providers.delete", (bit) = 55];
-
- // Events
-
- CAP_EVENTS_SUBSCRIPTION_CREATE = 1501 [(name) = "subscriptions.create", (bit) = 36];
- CAP_EVENTS_SUBSCRIPTION_UPDATE = 1502 [(name) = "subscriptions.update", (bit) = 37];
- CAP_EVENTS_SUBSCRIPTION_LIST = 1503 [(name) = "subscriptions.list", (bit) = 38];
- CAP_EVENTS_SUBSCRIPTION_DELETE = 1504 [(name) = "subscriptions.delete", (bit) = 39];
-
- // Registry
-
- // TODO(jason): Remove these coarse-grained capabilities after they're removed from the roles.
- CAP_REGISTRY_PULL = 1601 [(name) = "registry.pull", (bit) = 40]; // Can read tags, blobs, manifests.
- CAP_REGISTRY_PUSH = 1602 [(name) = "registry.push", (bit) = 41]; // Can create and update tags, blobs, manifests.
-
- CAP_REPO_CREATE = 1603 [(name) = "repo.create", (bit) = 56];
- CAP_REPO_UPDATE = 1604 [(name) = "repo.update", (bit) = 57];
- CAP_REPO_LIST = 1605 [(name) = "repo.list", (bit) = 58];
- CAP_REPO_DELETE = 1606 [(name) = "repo.delete", (bit) = 59];
-
- CAP_MANIFEST_CREATE = 1607 [(name) = "manifest.create", (bit) = 60];
- CAP_MANIFEST_UPDATE = 1608 [(name) = "manifest.update", (bit) = 61];
- CAP_MANIFEST_LIST = 1609 [(name) = "manifest.list", (bit) = 62];
- CAP_MANIFEST_DELETE = 1610 [(name) = "manifest.delete", (bit) = 63];
-
- CAP_TAG_CREATE = 1611 [(name) = "tag.create", (bit) = 64];
- CAP_TAG_UPDATE = 1612 [(name) = "tag.update", (bit) = 65];
- CAP_TAG_LIST = 1613 [(name) = "tag.list", (bit) = 66];
- CAP_TAG_DELETE = 1614 [(name) = "tag.delete", (bit) = 67];
-
- CAP_MANIFEST_METADATA_LIST = 1615 [(name) = "manifest.metadata.list", (bit) = 72];
-
- // Sigstore-aas
-
- CAP_SIGSTORE_CREATE = 1701 [(name) = "sigstore.create", (bit) = 42];
- CAP_SIGSTORE_UPDATE = 1702 [(name) = "sigstore.update", (bit) = 43];
- CAP_SIGSTORE_LIST = 1703 [(name) = "sigstore.list", (bit) = 44];
- CAP_SIGSTORE_DELETE = 1704 [(name) = "sigstore.delete", (bit) = 45];
-
- CAP_SIGSTORE_CERTIFICATE_CREATE = 1705 [(name) = "sigstore.certificate.create", (bit) = 46];
-
- // This is orthogonal enough that we should leave
- // it somewhat separate, so add new capabilities above.
- // TODO(mattmoor): Think about whether we can encode specific
- // controller capabilities into our access control here?
- // e.g. could each logical controller/webhook be its own
- // capability?
- CAP_GULFSTREAM = 10000 [(name) = "gulfstream", (bit) = 47];
-
- // next bit: 72
-}
diff --git a/proto/capabilities/capabilities_test.go b/proto/capabilities/capabilities_test.go
deleted file mode 100644
index 8d230dcb..00000000
--- a/proto/capabilities/capabilities_test.go
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package capabilities
-
-import (
- "encoding/json"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
-)
-
-func TestStringify(t *testing.T) {
- tests := []struct {
- name string
- capability Capability
- want string
- wantErr error
- }{{
- name: "no requirements",
- }, {
- name: "simple",
- capability: Capability_CAP_EVENTS_SUBSCRIPTION_DELETE,
- want: "subscriptions.delete",
- }, {
- name: "unknown",
- capability: 0,
- want: "",
- }, {
- name: "invalid",
- capability: 1,
- wantErr: status.Error(codes.Internal, `capability has no descriptor: 1`),
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- got, gotErr := Stringify(test.capability)
-
- switch {
- case (gotErr != nil) != (test.wantErr != nil):
- t.Fatalf("Stringify() = %v, %v, wanted %v, %v", got, gotErr, test.want, test.wantErr)
- case gotErr != nil && gotErr.Error() != test.wantErr.Error():
- t.Fatalf("Stringify() = %v, wanted %v", gotErr, test.wantErr)
- case gotErr == nil && got != test.want:
- t.Fatalf("Stringify() = %v, wanted %v", got, test.want)
- }
- })
- }
-}
-
-func TestRoundTrip(t *testing.T) {
- for cap := range Capability_name {
- scap, _ := Stringify(Capability(cap))
- got, _ := Parse(scap)
- if Capability(cap) != got {
- t.Fatalf("Parse(Stringify()) = %v, wanted %v", got, Capability(cap))
- }
- }
-}
-
-func TestEncoding(t *testing.T) {
- all := make(Set, 0, len(Capability_name))
- for cap := range Capability_name {
- if cap == int32(Capability_UNKNOWN) {
- continue
- }
- all = append(all, Capability(cap))
- }
- all = sortCaps(all)
-
- tests := []struct {
- name string
- caps Set
- }{{
- name: "owner",
- caps: OwnerCaps,
- }, {
- name: "editor",
- caps: EditorCaps,
- }, {
- name: "viewer",
- caps: ViewerCaps,
- }, {
- name: "gulfstream",
- caps: Set{Capability_CAP_GULFSTREAM},
- }, {
- name: "all",
- caps: all,
- }, {
- // sortCaps removes duplicates.
- name: "duplicates",
- caps: sortCaps(Set{Capability_CAP_GULFSTREAM, Capability_CAP_GULFSTREAM, Capability_CAP_GULFSTREAM}),
- }}
-
- for _, test := range tests {
- t.Run(test.name+"-standard", func(t *testing.T) {
- raw, err := json.Marshal(test.caps)
- if err != nil {
- t.Fatalf("json.Marshal() = %v", err)
- }
-
- t.Logf("ENCODED: %s", raw)
-
- // Confirm that we decode it and get what we expect.
- got := make(Set, 0, len(test.caps))
- if err := json.Unmarshal(raw, &got); err != nil {
- t.Fatalf("json.Unmarshal() = %v", err)
- }
- if diff := cmp.Diff(got, test.caps); diff != "" {
- t.Errorf("(-got +want) = %s", diff)
- }
- })
-
- t.Run(test.name+"-legacy", func(t *testing.T) {
- // Remove our type alias, so that we use the legacy encoding.
- legacy := []Capability(test.caps)
- raw, err := json.Marshal(legacy)
- if err != nil {
- t.Fatalf("json.Marshal() = %v", err)
- }
-
- t.Logf("ENCODED: %s", raw)
-
- // Confirm that we decode it and get what we expect when coming from
- // the legacy encoding.
- got := make(Set, 0, len(test.caps))
- if err := json.Unmarshal(raw, &got); err != nil {
- t.Fatalf("json.Unmarshal() = %v", err)
- }
- if diff := cmp.Diff(got, test.caps); diff != "" {
- t.Errorf("(-got +want) = %s", diff)
- }
- })
- }
-}
diff --git a/proto/capabilities/doc.go b/proto/capabilities/doc.go
deleted file mode 100644
index ef8a1f50..00000000
--- a/proto/capabilities/doc.go
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package capabilities contains the proto enum with our IAM capabilities.
-//
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. capabilities.proto
-package capabilities
diff --git a/proto/capabilities/roles.go b/proto/capabilities/roles.go
deleted file mode 100644
index 12eb7f5d..00000000
--- a/proto/capabilities/roles.go
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package capabilities
-
-import (
- "golang.org/x/exp/maps"
- "golang.org/x/exp/slices"
-)
-
-var (
- // viewerCaps are read-only capabilities that do not affect state.
- ViewerCaps = sortCaps(append([]Capability{
- Capability_CAP_EVENTS_SUBSCRIPTION_LIST,
-
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST,
- Capability_CAP_IAM_GROUP_INVITES_LIST,
- Capability_CAP_IAM_GROUPS_LIST,
- Capability_CAP_IAM_ROLE_BINDINGS_LIST,
- Capability_CAP_IAM_ROLES_LIST,
- Capability_CAP_IAM_POLICY_LIST,
- Capability_CAP_IAM_IDENTITY_LIST,
- Capability_CAP_IAM_IDENTITY_PROVIDERS_LIST,
-
- Capability_CAP_TENANT_CLUSTERS_DISCOVER,
- Capability_CAP_TENANT_CLUSTERS_LIST,
- Capability_CAP_TENANT_NAMESPACES_LIST,
- Capability_CAP_TENANT_NODES_LIST,
- Capability_CAP_TENANT_RECORDS_LIST,
- Capability_CAP_TENANT_RECORD_CONTEXTS_LIST,
- Capability_CAP_TENANT_RECORD_SIGNATURES_LIST,
- Capability_CAP_TENANT_RECORD_POLICY_RESULTS_LIST,
- Capability_CAP_TENANT_RISKS_LIST,
- Capability_CAP_TENANT_SBOMS_LIST,
- Capability_CAP_TENANT_VULN_REPORTS_LIST,
- Capability_CAP_TENANT_WORKLOADS_LIST,
-
- Capability_CAP_SIGSTORE_LIST,
- },
- // Viewers can also list repos and tags, and pull images.
- RegistryPullCaps...))
-
- // editorCaps can modify state, but not grant roles/permissions.
- EditorCaps = sortCaps(append([]Capability{
- Capability_CAP_EVENTS_SUBSCRIPTION_CREATE,
- Capability_CAP_EVENTS_SUBSCRIPTION_DELETE,
- Capability_CAP_EVENTS_SUBSCRIPTION_UPDATE,
-
- Capability_CAP_TENANT_CLUSTERS_CREATE,
- Capability_CAP_TENANT_CLUSTERS_UPDATE,
- Capability_CAP_TENANT_CLUSTERS_DELETE,
-
- Capability_CAP_SIGSTORE_CERTIFICATE_CREATE,
- Capability_CAP_SIGSTORE_CREATE,
- Capability_CAP_SIGSTORE_DELETE,
- Capability_CAP_SIGSTORE_UPDATE,
- }, ViewerCaps...))
-
- // ownerCaps includes all capabilities possible by a user.
- OwnerCaps = sortCaps(append([]Capability{
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE,
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE,
- Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE,
-
- Capability_CAP_IAM_GROUP_INVITES_CREATE,
- Capability_CAP_IAM_GROUP_INVITES_DELETE,
-
- Capability_CAP_IAM_GROUPS_CREATE,
- Capability_CAP_IAM_GROUPS_DELETE,
- Capability_CAP_IAM_GROUPS_UPDATE,
-
- Capability_CAP_IAM_POLICY_CREATE,
- Capability_CAP_IAM_POLICY_UPDATE,
- Capability_CAP_IAM_POLICY_DELETE,
-
- Capability_CAP_IAM_IDENTITY_CREATE,
- Capability_CAP_IAM_IDENTITY_DELETE,
- Capability_CAP_IAM_IDENTITY_UPDATE,
-
- Capability_CAP_IAM_IDENTITY_PROVIDERS_CREATE,
- Capability_CAP_IAM_IDENTITY_PROVIDERS_DELETE,
- Capability_CAP_IAM_IDENTITY_PROVIDERS_UPDATE,
-
- Capability_CAP_IAM_ROLE_BINDINGS_CREATE,
- Capability_CAP_IAM_ROLE_BINDINGS_DELETE,
- Capability_CAP_IAM_ROLE_BINDINGS_UPDATE,
-
- Capability_CAP_IAM_ROLES_CREATE,
- Capability_CAP_IAM_ROLES_DELETE,
- Capability_CAP_IAM_ROLES_UPDATE,
-
- // Add gulfstream capability to owner so owners can rolebind
- // identities to the gulfstream role.
- Capability_CAP_GULFSTREAM,
- }, append(EditorCaps,
- // Owners can also push and delete images, subject to the identity allowlist.
- RegistryPushCaps...)...))
-
- RegistryPullCaps = sortCaps([]Capability{
- Capability_CAP_IAM_GROUPS_LIST,
-
- Capability_CAP_REPO_LIST,
- Capability_CAP_MANIFEST_LIST,
- Capability_CAP_TAG_LIST,
- Capability_CAP_MANIFEST_METADATA_LIST,
-
- Capability_CAP_TENANT_RECORD_SIGNATURES_LIST,
- Capability_CAP_TENANT_SBOMS_LIST,
- Capability_CAP_TENANT_VULN_REPORTS_LIST,
- })
-
- RegistryPushCaps = sortCaps(append([]Capability{
- Capability_CAP_REPO_CREATE,
- Capability_CAP_REPO_UPDATE,
- Capability_CAP_REPO_DELETE,
-
- Capability_CAP_MANIFEST_CREATE,
- Capability_CAP_MANIFEST_UPDATE,
- Capability_CAP_MANIFEST_DELETE,
-
- Capability_CAP_TAG_CREATE,
- Capability_CAP_TAG_UPDATE,
- Capability_CAP_TAG_DELETE,
-
- // To create nested groups as needed on push.
- Capability_CAP_IAM_GROUPS_CREATE,
- }, RegistryPullCaps...))
-
- RegistryPullTokenCreatorCaps = sortCaps(append([]Capability{
- // Minimal set of capabilities to create a registry pull token.
- Capability_CAP_IAM_ROLE_BINDINGS_CREATE,
- Capability_CAP_IAM_IDENTITY_CREATE,
-
- Capability_CAP_IAM_ROLES_LIST,
- }, RegistryPullCaps...))
-
- SigningViewerCaps = sortCaps([]Capability{
- Capability_CAP_SIGSTORE_LIST,
- })
-
- SigningCertRequesterCaps = sortCaps(append([]Capability{
- Capability_CAP_SIGSTORE_CERTIFICATE_CREATE,
- }, SigningViewerCaps...))
-
- SigningEditorCaps = sortCaps(append([]Capability{
- Capability_CAP_SIGSTORE_CREATE,
- Capability_CAP_SIGSTORE_DELETE,
- Capability_CAP_SIGSTORE_UPDATE,
- }, SigningCertRequesterCaps...))
-)
-
-func sortCaps(caps []Capability) []Capability {
- uniq := map[Capability]struct{}{}
- for _, c := range caps {
- uniq[c] = struct{}{}
- }
- out := maps.Keys(uniq)
- slices.Sort(out)
- return out
-}
diff --git a/proto/google/api/annotations.proto b/proto/google/api/annotations.proto
deleted file mode 100644
index efdab3db..00000000
--- a/proto/google/api/annotations.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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.
-
-syntax = "proto3";
-
-package google.api;
-
-import "google/api/http.proto";
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "AnnotationsProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.MethodOptions {
- // See `HttpRule`.
- HttpRule http = 72295728;
-}
diff --git a/proto/google/api/field_behavior.proto b/proto/google/api/field_behavior.proto
deleted file mode 100644
index c4abe3b6..00000000
--- a/proto/google/api/field_behavior.proto
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-syntax = "proto3";
-
-package google.api;
-
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "FieldBehaviorProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.FieldOptions {
- // A designation of a specific field behavior (required, output only, etc.)
- // in protobuf messages.
- //
- // Examples:
- //
- // string name = 1 [(google.api.field_behavior) = REQUIRED];
- // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
- // google.protobuf.Duration ttl = 1
- // [(google.api.field_behavior) = INPUT_ONLY];
- // google.protobuf.Timestamp expire_time = 1
- // [(google.api.field_behavior) = OUTPUT_ONLY,
- // (google.api.field_behavior) = IMMUTABLE];
- repeated google.api.FieldBehavior field_behavior = 1052;
-}
-
-// An indicator of the behavior of a given field (for example, that a field
-// is required in requests, or given as output but ignored as input).
-// This **does not** change the behavior in protocol buffers itself; it only
-// denotes the behavior and may affect how API tooling handles the field.
-//
-// Note: This enum **may** receive new values in the future.
-enum FieldBehavior {
- // Conventional default for enums. Do not use this.
- FIELD_BEHAVIOR_UNSPECIFIED = 0;
-
- // Specifically denotes a field as optional.
- // While all fields in protocol buffers are optional, this may be specified
- // for emphasis if appropriate.
- OPTIONAL = 1;
-
- // Denotes a field as required.
- // This indicates that the field **must** be provided as part of the request,
- // and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
- REQUIRED = 2;
-
- // Denotes a field as output only.
- // This indicates that the field is provided in responses, but including the
- // field in a request does nothing (the server *must* ignore it and
- // *must not* throw an error as a result of the field's presence).
- OUTPUT_ONLY = 3;
-
- // Denotes a field as input only.
- // This indicates that the field is provided in requests, and the
- // corresponding field is not included in output.
- INPUT_ONLY = 4;
-
- // Denotes a field as immutable.
- // This indicates that the field may be set once in a request to create a
- // resource, but may not be changed thereafter.
- IMMUTABLE = 5;
-
- // Denotes that a (repeated) field is an unordered list.
- // This indicates that the service may provide the elements of the list
- // in any arbitrary order, rather than the order the user originally
- // provided. Additionally, the list's order may or may not be stable.
- UNORDERED_LIST = 6;
-
- // Denotes that this field returns a non-empty default value if not set.
- // This indicates that if the user provides the empty value in a request,
- // a non-empty value will be returned. The user will not be aware of what
- // non-empty value to expect.
- NON_EMPTY_DEFAULT = 7;
-}
diff --git a/proto/google/api/http.proto b/proto/google/api/http.proto
deleted file mode 100644
index 113fa936..00000000
--- a/proto/google/api/http.proto
+++ /dev/null
@@ -1,375 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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.
-
-syntax = "proto3";
-
-package google.api;
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "HttpProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-// Defines the HTTP configuration for an API service. It contains a list of
-// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
-// to one or more HTTP REST API methods.
-message Http {
- // A list of HTTP configuration rules that apply to individual API methods.
- //
- // **NOTE:** All service configuration rules follow "last one wins" order.
- repeated HttpRule rules = 1;
-
- // When set to true, URL path parameters will be fully URI-decoded except in
- // cases of single segment matches in reserved expansion, where "%2F" will be
- // left encoded.
- //
- // The default behavior is to not decode RFC 6570 reserved characters in multi
- // segment matches.
- bool fully_decode_reserved_expansion = 2;
-}
-
-// # gRPC Transcoding
-//
-// gRPC Transcoding is a feature for mapping between a gRPC method and one or
-// more HTTP REST endpoints. It allows developers to build a single API service
-// that supports both gRPC APIs and REST APIs. Many systems, including [Google
-// APIs](https://github.com/googleapis/googleapis),
-// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
-// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
-// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
-// and use it for large scale production services.
-//
-// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
-// how different portions of the gRPC request message are mapped to the URL
-// path, URL query parameters, and HTTP request body. It also controls how the
-// gRPC response message is mapped to the HTTP response body. `HttpRule` is
-// typically specified as an `google.api.http` annotation on the gRPC method.
-//
-// Each mapping specifies a URL path template and an HTTP method. The path
-// template may refer to one or more fields in the gRPC request message, as long
-// as each field is a non-repeated field with a primitive (non-message) type.
-// The path template controls how fields of the request message are mapped to
-// the URL path.
-//
-// Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/{name=messages/*}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// string name = 1; // Mapped to URL path.
-// }
-// message Message {
-// string text = 1; // The resource content.
-// }
-//
-// This enables an HTTP REST to gRPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
-//
-// Any fields in the request message which are not bound by the path template
-// automatically become HTTP query parameters if there is no HTTP request body.
-// For example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get:"/v1/messages/{message_id}"
-// };
-// }
-// }
-// message GetMessageRequest {
-// message SubMessage {
-// string subfield = 1;
-// }
-// string message_id = 1; // Mapped to URL path.
-// int64 revision = 2; // Mapped to URL query parameter `revision`.
-// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
-// }
-//
-// This enables a HTTP JSON to RPC mapping as below:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
-// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
-// "foo"))`
-//
-// Note that fields which are mapped to URL query parameters must have a
-// primitive type or a repeated primitive type or a non-repeated message type.
-// In the case of a repeated type, the parameter can be repeated in the URL
-// as `...?param=A¶m=B`. In the case of a message type, each field of the
-// message is mapped to a separate parameter, such as
-// `...?foo.a=A&foo.b=B&foo.c=C`.
-//
-// For HTTP methods that allow a request body, the `body` field
-// specifies the mapping. Consider a REST update method on the
-// message resource collection:
-//
-// service Messaging {
-// rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "message"
-// };
-// }
-// }
-// message UpdateMessageRequest {
-// string message_id = 1; // mapped to the URL
-// Message message = 2; // mapped to the body
-// }
-//
-// The following HTTP JSON to RPC mapping is enabled, where the
-// representation of the JSON in the request body is determined by
-// protos JSON encoding:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" message { text: "Hi!" })`
-//
-// The special name `*` can be used in the body mapping to define that
-// every field not bound by the path template should be mapped to the
-// request body. This enables the following alternative definition of
-// the update method:
-//
-// service Messaging {
-// rpc UpdateMessage(Message) returns (Message) {
-// option (google.api.http) = {
-// patch: "/v1/messages/{message_id}"
-// body: "*"
-// };
-// }
-// }
-// message Message {
-// string message_id = 1;
-// string text = 2;
-// }
-//
-//
-// The following HTTP JSON to RPC mapping is enabled:
-//
-// HTTP | gRPC
-// -----|-----
-// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
-// "123456" text: "Hi!")`
-//
-// Note that when using `*` in the body mapping, it is not possible to
-// have HTTP parameters, as all fields not bound by the path end in
-// the body. This makes this option more rarely used in practice when
-// defining REST APIs. The common usage of `*` is in custom methods
-// which don't use the URL at all for transferring data.
-//
-// It is possible to define multiple HTTP methods for one RPC by using
-// the `additional_bindings` option. Example:
-//
-// service Messaging {
-// rpc GetMessage(GetMessageRequest) returns (Message) {
-// option (google.api.http) = {
-// get: "/v1/messages/{message_id}"
-// additional_bindings {
-// get: "/v1/users/{user_id}/messages/{message_id}"
-// }
-// };
-// }
-// }
-// message GetMessageRequest {
-// string message_id = 1;
-// string user_id = 2;
-// }
-//
-// This enables the following two alternative HTTP JSON to RPC mappings:
-//
-// HTTP | gRPC
-// -----|-----
-// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
-// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
-// "123456")`
-//
-// ## Rules for HTTP mapping
-//
-// 1. Leaf request fields (recursive expansion nested messages in the request
-// message) are classified into three categories:
-// - Fields referred by the path template. They are passed via the URL path.
-// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP
-// request body.
-// - All other fields are passed via the URL query parameters, and the
-// parameter name is the field path in the request message. A repeated
-// field can be represented as multiple query parameters under the same
-// name.
-// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields
-// are passed via URL path and HTTP request body.
-// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all
-// fields are passed via URL path and URL query parameters.
-//
-// ### Path template syntax
-//
-// Template = "/" Segments [ Verb ] ;
-// Segments = Segment { "/" Segment } ;
-// Segment = "*" | "**" | LITERAL | Variable ;
-// Variable = "{" FieldPath [ "=" Segments ] "}" ;
-// FieldPath = IDENT { "." IDENT } ;
-// Verb = ":" LITERAL ;
-//
-// The syntax `*` matches a single URL path segment. The syntax `**` matches
-// zero or more URL path segments, which must be the last part of the URL path
-// except the `Verb`.
-//
-// The syntax `Variable` matches part of the URL path as specified by its
-// template. A variable template must not contain other variables. If a variable
-// matches a single path segment, its template may be omitted, e.g. `{var}`
-// is equivalent to `{var=*}`.
-//
-// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
-// contains any reserved character, such characters should be percent-encoded
-// before the matching.
-//
-// If a variable contains exactly one path segment, such as `"{var}"` or
-// `"{var=*}"`, when such a variable is expanded into a URL path on the client
-// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
-// server side does the reverse decoding. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{var}`.
-//
-// If a variable contains multiple path segments, such as `"{var=foo/*}"`
-// or `"{var=**}"`, when such a variable is expanded into a URL path on the
-// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
-// The server side does the reverse decoding, except "%2F" and "%2f" are left
-// unchanged. Such variables show up in the
-// [Discovery
-// Document](https://developers.google.com/discovery/v1/reference/apis) as
-// `{+var}`.
-//
-// ## Using gRPC API Service Configuration
-//
-// gRPC API Service Configuration (service config) is a configuration language
-// for configuring a gRPC service to become a user-facing product. The
-// service config is simply the YAML representation of the `google.api.Service`
-// proto message.
-//
-// As an alternative to annotating your proto file, you can configure gRPC
-// transcoding in your service config YAML files. You do this by specifying a
-// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
-// effect as the proto annotation. This can be particularly useful if you
-// have a proto that is reused in multiple services. Note that any transcoding
-// specified in the service config will override any matching transcoding
-// configuration in the proto.
-//
-// Example:
-//
-// http:
-// rules:
-// # Selects a gRPC method and applies HttpRule to it.
-// - selector: example.v1.Messaging.GetMessage
-// get: /v1/messages/{message_id}/{sub.subfield}
-//
-// ## Special notes
-//
-// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
-// proto to JSON conversion must follow the [proto3
-// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
-//
-// While the single segment variable follows the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
-// Expansion, the multi segment variable **does not** follow RFC 6570 Section
-// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
-// does not expand special characters like `?` and `#`, which would lead
-// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
-// for multi segment variables.
-//
-// The path variables **must not** refer to any repeated or mapped field,
-// because client libraries are not capable of handling such variable expansion.
-//
-// The path variables **must not** capture the leading "/" character. The reason
-// is that the most common use case "{var}" does not capture the leading "/"
-// character. For consistency, all path variables must share the same behavior.
-//
-// Repeated message fields must not be mapped to URL query parameters, because
-// no client library can support such complicated mapping.
-//
-// If an API needs to use a JSON array for request or response body, it can map
-// the request or response body to a repeated field. However, some gRPC
-// Transcoding implementations may not support this feature.
-message HttpRule {
- // Selects a method to which this rule applies.
- //
- // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
- string selector = 1;
-
- // Determines the URL pattern is matched by this rules. This pattern can be
- // used with any of the {get|put|post|delete|patch} methods. A custom method
- // can be defined using the 'custom' field.
- oneof pattern {
- // Maps to HTTP GET. Used for listing and getting information about
- // resources.
- string get = 2;
-
- // Maps to HTTP PUT. Used for replacing a resource.
- string put = 3;
-
- // Maps to HTTP POST. Used for creating a resource or performing an action.
- string post = 4;
-
- // Maps to HTTP DELETE. Used for deleting a resource.
- string delete = 5;
-
- // Maps to HTTP PATCH. Used for updating a resource.
- string patch = 6;
-
- // The custom pattern is used for specifying an HTTP method that is not
- // included in the `pattern` field, such as HEAD, or "*" to leave the
- // HTTP method unspecified for this rule. The wild-card rule is useful
- // for services that provide content to Web (HTML) clients.
- CustomHttpPattern custom = 8;
- }
-
- // The name of the request field whose value is mapped to the HTTP request
- // body, or `*` for mapping all request fields not captured by the path
- // pattern to the HTTP body, or omitted for not having any HTTP request body.
- //
- // NOTE: the referred field must be present at the top-level of the request
- // message type.
- string body = 7;
-
- // Optional. The name of the response field whose value is mapped to the HTTP
- // response body. When omitted, the entire response message will be used
- // as the HTTP response body.
- //
- // NOTE: The referred field must be present at the top-level of the response
- // message type.
- string response_body = 12;
-
- // Additional HTTP bindings for the selector. Nested bindings must
- // not contain an `additional_bindings` field themselves (that is,
- // the nesting may only be one level deep).
- repeated HttpRule additional_bindings = 11;
-}
-
-// A custom pattern is used for defining custom HTTP verb.
-message CustomHttpPattern {
- // The name of this custom HTTP verb.
- string kind = 1;
-
- // The path matched by this custom verb.
- string path = 2;
-}
diff --git a/proto/google/api/httpbody.proto b/proto/google/api/httpbody.proto
deleted file mode 100644
index 00c80aba..00000000
--- a/proto/google/api/httpbody.proto
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2015 Google LLC
-//
-// 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.
-
-syntax = "proto3";
-
-package google.api;
-
-import "google/protobuf/any.proto";
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";
-option java_multiple_files = true;
-option java_outer_classname = "HttpBodyProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-// Message that represents an arbitrary HTTP body. It should only be used for
-// payload formats that can't be represented as JSON, such as raw binary or
-// an HTML page.
-//
-//
-// This message can be used both in streaming and non-streaming API methods in
-// the request as well as the response.
-//
-// It can be used as a top-level request field, which is convenient if one
-// wants to extract parameters from either the URL or HTTP template into the
-// request fields and also want access to the raw HTTP body.
-//
-// Example:
-//
-// message GetResourceRequest {
-// // A unique request id.
-// string request_id = 1;
-//
-// // The raw HTTP body is bound to this field.
-// google.api.HttpBody http_body = 2;
-//
-// }
-//
-// service ResourceService {
-// rpc GetResource(GetResourceRequest)
-// returns (google.api.HttpBody);
-// rpc UpdateResource(google.api.HttpBody)
-// returns (google.protobuf.Empty);
-//
-// }
-//
-// Example with streaming methods:
-//
-// service CaldavService {
-// rpc GetCalendar(stream google.api.HttpBody)
-// returns (stream google.api.HttpBody);
-// rpc UpdateCalendar(stream google.api.HttpBody)
-// returns (stream google.api.HttpBody);
-//
-// }
-//
-// Use of this type only changes how the request and response bodies are
-// handled, all other features will continue to work unchanged.
-message HttpBody {
- // The HTTP Content-Type header value specifying the content type of the body.
- string content_type = 1;
-
- // The HTTP request/response body as raw binary.
- bytes data = 2;
-
- // Application specific response metadata. Must be set in the first response
- // for streaming APIs.
- repeated google.protobuf.Any extensions = 3;
-}
diff --git a/proto/google/api/resource.proto b/proto/google/api/resource.proto
deleted file mode 100644
index ab71d2b9..00000000
--- a/proto/google/api/resource.proto
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-syntax = "proto3";
-
-package google.api;
-
-import "google/protobuf/descriptor.proto";
-
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
-option java_multiple_files = true;
-option java_outer_classname = "ResourceProto";
-option java_package = "com.google.api";
-option objc_class_prefix = "GAPI";
-
-extend google.protobuf.FieldOptions {
- // An annotation that describes a resource reference, see
- // [ResourceReference][].
- google.api.ResourceReference resource_reference = 1055;
-}
-
-extend google.protobuf.FileOptions {
- // An annotation that describes a resource definition without a corresponding
- // message; see [ResourceDescriptor][].
- repeated google.api.ResourceDescriptor resource_definition = 1053;
-}
-
-extend google.protobuf.MessageOptions {
- // An annotation that describes a resource definition, see
- // [ResourceDescriptor][].
- google.api.ResourceDescriptor resource = 1053;
-}
-
-// A simple descriptor of a resource type.
-//
-// ResourceDescriptor annotates a resource message (either by means of a
-// protobuf annotation or use in the service config), and associates the
-// resource's schema, the resource type, and the pattern of the resource name.
-//
-// Example:
-//
-// message Topic {
-// // Indicates this message defines a resource schema.
-// // Declares the resource type in the format of {service}/{kind}.
-// // For Kubernetes resources, the format is {api group}/{kind}.
-// option (google.api.resource) = {
-// type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: "pubsub.googleapis.com/Topic"
-// pattern: "projects/{project}/topics/{topic}"
-//
-// Sometimes, resources have multiple patterns, typically because they can
-// live under multiple parents.
-//
-// Example:
-//
-// message LogEntry {
-// option (google.api.resource) = {
-// type: "logging.googleapis.com/LogEntry"
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: 'logging.googleapis.com/LogEntry'
-// pattern: "projects/{project}/logs/{log}"
-// pattern: "folders/{folder}/logs/{log}"
-// pattern: "organizations/{organization}/logs/{log}"
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-message ResourceDescriptor {
- // A description of the historical or future-looking state of the
- // resource pattern.
- enum History {
- // The "unset" value.
- HISTORY_UNSPECIFIED = 0;
-
- // The resource originally had one pattern and launched as such, and
- // additional patterns were added later.
- ORIGINALLY_SINGLE_PATTERN = 1;
-
- // The resource has one pattern, but the API owner expects to add more
- // later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
- // that from being necessary once there are multiple patterns.)
- FUTURE_MULTI_PATTERN = 2;
- }
-
- // A flag representing a specific style that a resource claims to conform to.
- enum Style {
- // The unspecified value. Do not use.
- STYLE_UNSPECIFIED = 0;
-
- // This resource is intended to be "declarative-friendly".
- //
- // Declarative-friendly resources must be more strictly consistent, and
- // setting this to true communicates to tools that this resource should
- // adhere to declarative-friendly expectations.
- //
- // Note: This is used by the API linter (linter.aip.dev) to enable
- // additional checks.
- DECLARATIVE_FRIENDLY = 1;
- }
-
- // The resource type. It must be in the format of
- // {service_name}/{resource_type_kind}. The `resource_type_kind` must be
- // singular and must not include version numbers.
- //
- // Example: `storage.googleapis.com/Bucket`
- //
- // The value of the resource_type_kind must follow the regular expression
- // /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
- // should use PascalCase (UpperCamelCase). The maximum number of
- // characters allowed for the `resource_type_kind` is 100.
- string type = 1;
-
- // Optional. The relative resource name pattern associated with this resource
- // type. The DNS prefix of the full resource name shouldn't be specified here.
- //
- // The path pattern must follow the syntax, which aligns with HTTP binding
- // syntax:
- //
- // Template = Segment { "/" Segment } ;
- // Segment = LITERAL | Variable ;
- // Variable = "{" LITERAL "}" ;
- //
- // Examples:
- //
- // - "projects/{project}/topics/{topic}"
- // - "projects/{project}/knowledgeBases/{knowledge_base}"
- //
- // The components in braces correspond to the IDs for each resource in the
- // hierarchy. It is expected that, if multiple patterns are provided,
- // the same component name (e.g. "project") refers to IDs of the same
- // type of resource.
- repeated string pattern = 2;
-
- // Optional. The field on the resource that designates the resource name
- // field. If omitted, this is assumed to be "name".
- string name_field = 3;
-
- // Optional. The historical or future-looking state of the resource pattern.
- //
- // Example:
- //
- // // The InspectTemplate message originally only supported resource
- // // names with organization, and project was added later.
- // message InspectTemplate {
- // option (google.api.resource) = {
- // type: "dlp.googleapis.com/InspectTemplate"
- // pattern:
- // "organizations/{organization}/inspectTemplates/{inspect_template}"
- // pattern: "projects/{project}/inspectTemplates/{inspect_template}"
- // history: ORIGINALLY_SINGLE_PATTERN
- // };
- // }
- History history = 4;
-
- // The plural name used in the resource name and permission names, such as
- // 'projects' for the resource name of 'projects/{project}' and the permission
- // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
- // concept of the `plural` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- //
- // Note: The plural form is required even for singleton resources. See
- // https://aip.dev/156
- string plural = 5;
-
- // The same concept of the `singular` field in k8s CRD spec
- // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
- // Such as "project" for the `resourcemanager.googleapis.com/Project` type.
- string singular = 6;
-
- // Style flag(s) for this resource.
- // These indicate that a resource is expected to conform to a given
- // style. See the specific style flags for additional information.
- repeated Style style = 10;
-}
-
-// Defines a proto annotation that describes a string field that refers to
-// an API resource.
-message ResourceReference {
- // The resource type that the annotated field references.
- //
- // Example:
- //
- // message Subscription {
- // string topic = 2 [(google.api.resource_reference) = {
- // type: "pubsub.googleapis.com/Topic"
- // }];
- // }
- //
- // Occasionally, a field may reference an arbitrary resource. In this case,
- // APIs use the special value * in their resource reference.
- //
- // Example:
- //
- // message GetIamPolicyRequest {
- // string resource = 2 [(google.api.resource_reference) = {
- // type: "*"
- // }];
- // }
- string type = 1;
-
- // The resource type of a child collection that the annotated field
- // references. This is useful for annotating the `parent` field that
- // doesn't have a fixed resource type.
- //
- // Example:
- //
- // message ListLogEntriesRequest {
- // string parent = 1 [(google.api.resource_reference) = {
- // child_type: "logging.googleapis.com/LogEntry"
- // };
- // }
- string child_type = 2;
-}
-
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.go b/proto/platform/advisory/v1/advisory.platform.pb.go
deleted file mode 100644
index 889b4650..00000000
--- a/proto/platform/advisory/v1/advisory.platform.pb.go
+++ /dev/null
@@ -1,1936 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: advisory.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Reference_Type int32
-
-const (
- // The "unset" value.
- Reference_UNSPECIFIED Reference_Type = 0
- // Published security advisory for the vulnerability.
- Reference_ADVISORY Reference_Type = 1
- // Article or blog post describing the vulnerability.
- Reference_ARTICLE Reference_Type = 2
- // Scanner or tool that allows detection in prod environments.
- Reference_DETECTION Reference_Type = 3
- // Social media discussion about vuln.
- Reference_DISCUSSION Reference_Type = 4
- // Report on vuln.
- Reference_REPORT Reference_Type = 5
- // Source code browser link to fix.
- Reference_FIX Reference_Type = 6
- // Source code browser link to introduction of vuln.
- Reference_INTRODUCED Reference_Type = 7
- // Home web page for package.
- Reference_PACKAGE Reference_Type = 8
- // Demonstration of validity of vuln claim.
- Reference_EVIDENCE Reference_Type = 9
- // Web page of unspecified kind.
- Reference_WEB Reference_Type = 10
-)
-
-// Enum value maps for Reference_Type.
-var (
- Reference_Type_name = map[int32]string{
- 0: "UNSPECIFIED",
- 1: "ADVISORY",
- 2: "ARTICLE",
- 3: "DETECTION",
- 4: "DISCUSSION",
- 5: "REPORT",
- 6: "FIX",
- 7: "INTRODUCED",
- 8: "PACKAGE",
- 9: "EVIDENCE",
- 10: "WEB",
- }
- Reference_Type_value = map[string]int32{
- "UNSPECIFIED": 0,
- "ADVISORY": 1,
- "ARTICLE": 2,
- "DETECTION": 3,
- "DISCUSSION": 4,
- "REPORT": 5,
- "FIX": 6,
- "INTRODUCED": 7,
- "PACKAGE": 8,
- "EVIDENCE": 9,
- "WEB": 10,
- }
-)
-
-func (x Reference_Type) Enum() *Reference_Type {
- p := new(Reference_Type)
- *p = x
- return p
-}
-
-func (x Reference_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Reference_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_advisory_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (Reference_Type) Type() protoreflect.EnumType {
- return &file_advisory_platform_proto_enumTypes[0]
-}
-
-func (x Reference_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Reference_Type.Descriptor instead.
-func (Reference_Type) EnumDescriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{1, 0}
-}
-
-type Severity_Type int32
-
-const (
- // The "unset" value.
- Severity_UNSPECIFIED Severity_Type = 0
- // CVSS v2
- Severity_CVSS_V2 Severity_Type = 1
- // CVSS >= 3.0 and < 4.0
- Severity_CVSS_V3 Severity_Type = 2
- // CVSS >= 4.0 and < 5.0
- Severity_CVSS_V4 Severity_Type = 3
-)
-
-// Enum value maps for Severity_Type.
-var (
- Severity_Type_name = map[int32]string{
- 0: "UNSPECIFIED",
- 1: "CVSS_V2",
- 2: "CVSS_V3",
- 3: "CVSS_V4",
- }
- Severity_Type_value = map[string]int32{
- "UNSPECIFIED": 0,
- "CVSS_V2": 1,
- "CVSS_V3": 2,
- "CVSS_V4": 3,
- }
-)
-
-func (x Severity_Type) Enum() *Severity_Type {
- p := new(Severity_Type)
- *p = x
- return p
-}
-
-func (x Severity_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Severity_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_advisory_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (Severity_Type) Type() protoreflect.EnumType {
- return &file_advisory_platform_proto_enumTypes[1]
-}
-
-func (x Severity_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Severity_Type.Descriptor instead.
-func (Severity_Type) EnumDescriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{2, 0}
-}
-
-type FalsePositiveDetermination_Type int32
-
-const (
- // The "unset" value.
- FalsePositiveDetermination_FPT_TYPE_UNSPECIFIED FalsePositiveDetermination_Type = 0
- // VEX: vulnerable_code_not_present.
- FalsePositiveDetermination_FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED FalsePositiveDetermination_Type = 1
- // VEX: component_not_present.
- FalsePositiveDetermination_FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH FalsePositiveDetermination_Type = 2
- // VEX: vulnerable_code_not_present.
- FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED FalsePositiveDetermination_Type = 3
- // VEX: vulnerable_code_not_present.
- FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE FalsePositiveDetermination_Type = 4
- // VEX: vulnerable_code_not_in_execute_path.
- FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH FalsePositiveDetermination_Type = 5
- // VEX: vulnerable_code_cannot_be_controlled_by_adversary.
- FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY FalsePositiveDetermination_Type = 6
- // VEX: inline_mitigations_already_exist.
- FalsePositiveDetermination_FPT_TYPE_INLINE_MITIGATIONS_EXIST FalsePositiveDetermination_Type = 7
-)
-
-// Enum value maps for FalsePositiveDetermination_Type.
-var (
- FalsePositiveDetermination_Type_name = map[int32]string{
- 0: "FPT_TYPE_UNSPECIFIED",
- 1: "FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED",
- 2: "FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH",
- 3: "FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED",
- 4: "FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE",
- 5: "FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH",
- 6: "FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY",
- 7: "FPT_TYPE_INLINE_MITIGATIONS_EXIST",
- }
- FalsePositiveDetermination_Type_value = map[string]int32{
- "FPT_TYPE_UNSPECIFIED": 0,
- "FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED": 1,
- "FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH": 2,
- "FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED": 3,
- "FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE": 4,
- "FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH": 5,
- "FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY": 6,
- "FPT_TYPE_INLINE_MITIGATIONS_EXIST": 7,
- }
-)
-
-func (x FalsePositiveDetermination_Type) Enum() *FalsePositiveDetermination_Type {
- p := new(FalsePositiveDetermination_Type)
- *p = x
- return p
-}
-
-func (x FalsePositiveDetermination_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FalsePositiveDetermination_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_advisory_platform_proto_enumTypes[2].Descriptor()
-}
-
-func (FalsePositiveDetermination_Type) Type() protoreflect.EnumType {
- return &file_advisory_platform_proto_enumTypes[2]
-}
-
-func (x FalsePositiveDetermination_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use FalsePositiveDetermination_Type.Descriptor instead.
-func (FalsePositiveDetermination_Type) EnumDescriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{7, 0}
-}
-
-type VulnerabilityMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the identifier of this specific vuln.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"`
- Details string `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"`
- References []*Reference `protobuf:"bytes,4,rep,name=references,proto3" json:"references,omitempty"`
- Severity []*Severity `protobuf:"bytes,5,rep,name=severity,proto3" json:"severity,omitempty"`
-}
-
-func (x *VulnerabilityMetadata) Reset() {
- *x = VulnerabilityMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityMetadata) ProtoMessage() {}
-
-func (x *VulnerabilityMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityMetadata.ProtoReflect.Descriptor instead.
-func (*VulnerabilityMetadata) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *VulnerabilityMetadata) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnerabilityMetadata) GetSummary() string {
- if x != nil {
- return x.Summary
- }
- return ""
-}
-
-func (x *VulnerabilityMetadata) GetDetails() string {
- if x != nil {
- return x.Details
- }
- return ""
-}
-
-func (x *VulnerabilityMetadata) GetReferences() []*Reference {
- if x != nil {
- return x.References
- }
- return nil
-}
-
-func (x *VulnerabilityMetadata) GetSeverity() []*Severity {
- if x != nil {
- return x.Severity
- }
- return nil
-}
-
-type Reference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type Reference_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.Reference_Type" json:"type,omitempty"`
- Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
-}
-
-func (x *Reference) Reset() {
- *x = Reference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Reference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Reference) ProtoMessage() {}
-
-func (x *Reference) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Reference.ProtoReflect.Descriptor instead.
-func (*Reference) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Reference) GetType() Reference_Type {
- if x != nil {
- return x.Type
- }
- return Reference_UNSPECIFIED
-}
-
-func (x *Reference) GetUrl() string {
- if x != nil {
- return x.Url
- }
- return ""
-}
-
-type Severity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // CVSS version standard.
- Type Severity_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.Severity_Type" json:"type,omitempty"`
- // Vector string representing CVSS score based on type.
- Score string `protobuf:"bytes,2,opt,name=score,proto3" json:"score,omitempty"`
-}
-
-func (x *Severity) Reset() {
- *x = Severity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Severity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Severity) ProtoMessage() {}
-
-func (x *Severity) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Severity.ProtoReflect.Descriptor instead.
-func (*Severity) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Severity) GetType() Severity_Type {
- if x != nil {
- return x.Type
- }
- return Severity_UNSPECIFIED
-}
-
-func (x *Severity) GetScore() string {
- if x != nil {
- return x.Score
- }
- return ""
-}
-
-type Advisory struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the identifier of this specific advisory.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Events []*Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"`
- Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"`
-}
-
-func (x *Advisory) Reset() {
- *x = Advisory{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Advisory) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Advisory) ProtoMessage() {}
-
-func (x *Advisory) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Advisory.ProtoReflect.Descriptor instead.
-func (*Advisory) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Advisory) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Advisory) GetEvents() []*Event {
- if x != nil {
- return x.Events
- }
- return nil
-}
-
-func (x *Advisory) GetAliases() []string {
- if x != nil {
- return x.Aliases
- }
- return nil
-}
-
-type Document struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Advisories []*Advisory `protobuf:"bytes,2,rep,name=advisories,proto3" json:"advisories,omitempty"`
-}
-
-func (x *Document) Reset() {
- *x = Document{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Document) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Document) ProtoMessage() {}
-
-func (x *Document) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Document.ProtoReflect.Descriptor instead.
-func (*Document) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Document) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Document) GetAdvisories() []*Advisory {
- if x != nil {
- return x.Advisories
- }
- return nil
-}
-
-type Event struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- // Types that are assignable to Data:
- //
- // *Event_TruePositiveDetermination
- // *Event_FalsePositiveDetermination
- // *Event_Fixed
- // *Event_Detection
- // *Event_AnalysisNotPlanned
- // *Event_FixNotPlanned
- // *Event_PendingUpstreamFix
- Data isEvent_Data `protobuf_oneof:"data"`
-}
-
-func (x *Event) Reset() {
- *x = Event{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Event) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Event) ProtoMessage() {}
-
-func (x *Event) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Event.ProtoReflect.Descriptor instead.
-func (*Event) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Event) GetTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.Timestamp
- }
- return nil
-}
-
-func (m *Event) GetData() isEvent_Data {
- if m != nil {
- return m.Data
- }
- return nil
-}
-
-func (x *Event) GetTruePositiveDetermination() *TruePositiveDetermination {
- if x, ok := x.GetData().(*Event_TruePositiveDetermination); ok {
- return x.TruePositiveDetermination
- }
- return nil
-}
-
-func (x *Event) GetFalsePositiveDetermination() *FalsePositiveDetermination {
- if x, ok := x.GetData().(*Event_FalsePositiveDetermination); ok {
- return x.FalsePositiveDetermination
- }
- return nil
-}
-
-func (x *Event) GetFixed() *Fixed {
- if x, ok := x.GetData().(*Event_Fixed); ok {
- return x.Fixed
- }
- return nil
-}
-
-func (x *Event) GetDetection() *Detection {
- if x, ok := x.GetData().(*Event_Detection); ok {
- return x.Detection
- }
- return nil
-}
-
-func (x *Event) GetAnalysisNotPlanned() *AnalysisNotPlanned {
- if x, ok := x.GetData().(*Event_AnalysisNotPlanned); ok {
- return x.AnalysisNotPlanned
- }
- return nil
-}
-
-func (x *Event) GetFixNotPlanned() *FixNotPlanned {
- if x, ok := x.GetData().(*Event_FixNotPlanned); ok {
- return x.FixNotPlanned
- }
- return nil
-}
-
-func (x *Event) GetPendingUpstreamFix() *PendingUpstreamFix {
- if x, ok := x.GetData().(*Event_PendingUpstreamFix); ok {
- return x.PendingUpstreamFix
- }
- return nil
-}
-
-type isEvent_Data interface {
- isEvent_Data()
-}
-
-type Event_TruePositiveDetermination struct {
- TruePositiveDetermination *TruePositiveDetermination `protobuf:"bytes,10,opt,name=true_positive_determination,json=truePositiveDetermination,proto3,oneof"`
-}
-
-type Event_FalsePositiveDetermination struct {
- FalsePositiveDetermination *FalsePositiveDetermination `protobuf:"bytes,11,opt,name=false_positive_determination,json=falsePositiveDetermination,proto3,oneof"`
-}
-
-type Event_Fixed struct {
- Fixed *Fixed `protobuf:"bytes,12,opt,name=fixed,proto3,oneof"`
-}
-
-type Event_Detection struct {
- Detection *Detection `protobuf:"bytes,13,opt,name=detection,proto3,oneof"`
-}
-
-type Event_AnalysisNotPlanned struct {
- AnalysisNotPlanned *AnalysisNotPlanned `protobuf:"bytes,14,opt,name=analysis_not_planned,json=analysisNotPlanned,proto3,oneof"`
-}
-
-type Event_FixNotPlanned struct {
- FixNotPlanned *FixNotPlanned `protobuf:"bytes,15,opt,name=fix_not_planned,json=fixNotPlanned,proto3,oneof"`
-}
-
-type Event_PendingUpstreamFix struct {
- PendingUpstreamFix *PendingUpstreamFix `protobuf:"bytes,16,opt,name=pending_upstream_fix,json=pendingUpstreamFix,proto3,oneof"`
-}
-
-func (*Event_TruePositiveDetermination) isEvent_Data() {}
-
-func (*Event_FalsePositiveDetermination) isEvent_Data() {}
-
-func (*Event_Fixed) isEvent_Data() {}
-
-func (*Event_Detection) isEvent_Data() {}
-
-func (*Event_AnalysisNotPlanned) isEvent_Data() {}
-
-func (*Event_FixNotPlanned) isEvent_Data() {}
-
-func (*Event_PendingUpstreamFix) isEvent_Data() {}
-
-type TruePositiveDetermination struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
-}
-
-func (x *TruePositiveDetermination) Reset() {
- *x = TruePositiveDetermination{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TruePositiveDetermination) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TruePositiveDetermination) ProtoMessage() {}
-
-func (x *TruePositiveDetermination) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TruePositiveDetermination.ProtoReflect.Descriptor instead.
-func (*TruePositiveDetermination) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *TruePositiveDetermination) GetNote() string {
- if x != nil {
- return x.Note
- }
- return ""
-}
-
-type FalsePositiveDetermination struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type FalsePositiveDetermination_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.FalsePositiveDetermination_Type" json:"type,omitempty"`
- Note string `protobuf:"bytes,2,opt,name=note,proto3" json:"note,omitempty"`
-}
-
-func (x *FalsePositiveDetermination) Reset() {
- *x = FalsePositiveDetermination{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FalsePositiveDetermination) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FalsePositiveDetermination) ProtoMessage() {}
-
-func (x *FalsePositiveDetermination) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FalsePositiveDetermination.ProtoReflect.Descriptor instead.
-func (*FalsePositiveDetermination) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *FalsePositiveDetermination) GetType() FalsePositiveDetermination_Type {
- if x != nil {
- return x.Type
- }
- return FalsePositiveDetermination_FPT_TYPE_UNSPECIFIED
-}
-
-func (x *FalsePositiveDetermination) GetNote() string {
- if x != nil {
- return x.Note
- }
- return ""
-}
-
-type Fixed struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- FixedVersion string `protobuf:"bytes,1,opt,name=fixed_version,json=fixedVersion,proto3" json:"fixed_version,omitempty"`
-}
-
-func (x *Fixed) Reset() {
- *x = Fixed{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Fixed) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Fixed) ProtoMessage() {}
-
-func (x *Fixed) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Fixed.ProtoReflect.Descriptor instead.
-func (*Fixed) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Fixed) GetFixedVersion() string {
- if x != nil {
- return x.FixedVersion
- }
- return ""
-}
-
-type Detection struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Type:
- //
- // *Detection_Nvdapi
- // *Detection_Manual
- Type isDetection_Type `protobuf_oneof:"type"`
-}
-
-func (x *Detection) Reset() {
- *x = Detection{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Detection) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Detection) ProtoMessage() {}
-
-func (x *Detection) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Detection.ProtoReflect.Descriptor instead.
-func (*Detection) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{9}
-}
-
-func (m *Detection) GetType() isDetection_Type {
- if m != nil {
- return m.Type
- }
- return nil
-}
-
-func (x *Detection) GetNvdapi() *Detection_DetectionTypeNVDAPI {
- if x, ok := x.GetType().(*Detection_Nvdapi); ok {
- return x.Nvdapi
- }
- return nil
-}
-
-func (x *Detection) GetManual() *Detection_DetectionTypeManual {
- if x, ok := x.GetType().(*Detection_Manual); ok {
- return x.Manual
- }
- return nil
-}
-
-type isDetection_Type interface {
- isDetection_Type()
-}
-
-type Detection_Nvdapi struct {
- Nvdapi *Detection_DetectionTypeNVDAPI `protobuf:"bytes,1,opt,name=nvdapi,proto3,oneof"`
-}
-
-type Detection_Manual struct {
- Manual *Detection_DetectionTypeManual `protobuf:"bytes,2,opt,name=manual,proto3,oneof"`
-}
-
-func (*Detection_Nvdapi) isDetection_Type() {}
-
-func (*Detection_Manual) isDetection_Type() {}
-
-type AnalysisNotPlanned struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
-}
-
-func (x *AnalysisNotPlanned) Reset() {
- *x = AnalysisNotPlanned{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AnalysisNotPlanned) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AnalysisNotPlanned) ProtoMessage() {}
-
-func (x *AnalysisNotPlanned) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AnalysisNotPlanned.ProtoReflect.Descriptor instead.
-func (*AnalysisNotPlanned) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *AnalysisNotPlanned) GetNote() string {
- if x != nil {
- return x.Note
- }
- return ""
-}
-
-type FixNotPlanned struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
-}
-
-func (x *FixNotPlanned) Reset() {
- *x = FixNotPlanned{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FixNotPlanned) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FixNotPlanned) ProtoMessage() {}
-
-func (x *FixNotPlanned) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FixNotPlanned.ProtoReflect.Descriptor instead.
-func (*FixNotPlanned) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *FixNotPlanned) GetNote() string {
- if x != nil {
- return x.Note
- }
- return ""
-}
-
-type PendingUpstreamFix struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
-}
-
-func (x *PendingUpstreamFix) Reset() {
- *x = PendingUpstreamFix{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PendingUpstreamFix) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PendingUpstreamFix) ProtoMessage() {}
-
-func (x *PendingUpstreamFix) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PendingUpstreamFix.ProtoReflect.Descriptor instead.
-func (*PendingUpstreamFix) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *PendingUpstreamFix) GetNote() string {
- if x != nil {
- return x.Note
- }
- return ""
-}
-
-type DocumentFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the id of a package.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Cves []string `protobuf:"bytes,2,rep,name=cves,proto3" json:"cves,omitempty"`
-}
-
-func (x *DocumentFilter) Reset() {
- *x = DocumentFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DocumentFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DocumentFilter) ProtoMessage() {}
-
-func (x *DocumentFilter) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DocumentFilter.ProtoReflect.Descriptor instead.
-func (*DocumentFilter) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *DocumentFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *DocumentFilter) GetCves() []string {
- if x != nil {
- return x.Cves
- }
- return nil
-}
-
-type DocumentList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Document `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *DocumentList) Reset() {
- *x = DocumentList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DocumentList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DocumentList) ProtoMessage() {}
-
-func (x *DocumentList) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DocumentList.ProtoReflect.Descriptor instead.
-func (*DocumentList) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *DocumentList) GetItems() []*Document {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type VulnerabilityMetadataFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the id of a vuln.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *VulnerabilityMetadataFilter) Reset() {
- *x = VulnerabilityMetadataFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityMetadataFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityMetadataFilter) ProtoMessage() {}
-
-func (x *VulnerabilityMetadataFilter) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityMetadataFilter.ProtoReflect.Descriptor instead.
-func (*VulnerabilityMetadataFilter) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *VulnerabilityMetadataFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type VulnerabilityMetadataList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*VulnerabilityMetadata `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *VulnerabilityMetadataList) Reset() {
- *x = VulnerabilityMetadataList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityMetadataList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityMetadataList) ProtoMessage() {}
-
-func (x *VulnerabilityMetadataList) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityMetadataList.ProtoReflect.Descriptor instead.
-func (*VulnerabilityMetadataList) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *VulnerabilityMetadataList) GetItems() []*VulnerabilityMetadata {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type Detection_DetectionTypeNVDAPI struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- CpeSearched string `protobuf:"bytes,1,opt,name=cpe_searched,json=cpeSearched,proto3" json:"cpe_searched,omitempty"`
- CpeFound string `protobuf:"bytes,2,opt,name=cpe_found,json=cpeFound,proto3" json:"cpe_found,omitempty"`
-}
-
-func (x *Detection_DetectionTypeNVDAPI) Reset() {
- *x = Detection_DetectionTypeNVDAPI{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Detection_DetectionTypeNVDAPI) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Detection_DetectionTypeNVDAPI) ProtoMessage() {}
-
-func (x *Detection_DetectionTypeNVDAPI) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Detection_DetectionTypeNVDAPI.ProtoReflect.Descriptor instead.
-func (*Detection_DetectionTypeNVDAPI) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{9, 0}
-}
-
-func (x *Detection_DetectionTypeNVDAPI) GetCpeSearched() string {
- if x != nil {
- return x.CpeSearched
- }
- return ""
-}
-
-func (x *Detection_DetectionTypeNVDAPI) GetCpeFound() string {
- if x != nil {
- return x.CpeFound
- }
- return ""
-}
-
-type Detection_DetectionTypeManual struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *Detection_DetectionTypeManual) Reset() {
- *x = Detection_DetectionTypeManual{}
- if protoimpl.UnsafeEnabled {
- mi := &file_advisory_platform_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Detection_DetectionTypeManual) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Detection_DetectionTypeManual) ProtoMessage() {}
-
-func (x *Detection_DetectionTypeManual) ProtoReflect() protoreflect.Message {
- mi := &file_advisory_platform_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Detection_DetectionTypeManual.ProtoReflect.Descriptor instead.
-func (*Detection_DetectionTypeManual) Descriptor() ([]byte, []int) {
- return file_advisory_platform_proto_rawDescGZIP(), []int{9, 1}
-}
-
-var File_advisory_platform_proto protoreflect.FileDescriptor
-
-var file_advisory_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8,
- 0x01, 0x0a, 0x15, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d,
- 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x0a,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74,
- 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64,
- 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x09, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69,
- 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54,
- 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x9a, 0x01, 0x0a, 0x04,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52,
- 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x54, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x02,
- 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12,
- 0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x55, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12,
- 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x46,
- 0x49, 0x58, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x52, 0x4f, 0x44, 0x55, 0x43,
- 0x45, 0x44, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10,
- 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x09, 0x12,
- 0x07, 0x0a, 0x03, 0x57, 0x45, 0x42, 0x10, 0x0a, 0x22, 0xa1, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x76,
- 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
- 0x72, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65,
- 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x04,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x32,
- 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x33, 0x10, 0x02, 0x12,
- 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x34, 0x10, 0x03, 0x22, 0x71, 0x0a, 0x08,
- 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x22,
- 0x62, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x61,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x41,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x22, 0xeb, 0x05, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a,
- 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x72, 0x75, 0x65, 0x5f,
- 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x75, 0x65,
- 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x74, 0x72, 0x75, 0x65, 0x50, 0x6f, 0x73,
- 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x1c, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69,
- 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73,
- 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74,
- 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46,
- 0x69, 0x78, 0x65, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x47, 0x0a,
- 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e,
- 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x14, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
- 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0e,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73,
- 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50,
- 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
- 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0f,
- 0x66, 0x69, 0x78, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18,
- 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69,
- 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e,
- 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e,
- 0x6e, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x14, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x75,
- 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x66, 0x69, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79,
- 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x46, 0x69, 0x78, 0x48, 0x00, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70,
- 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x46, 0x69, 0x78, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0x2f, 0x0a, 0x19, 0x54, 0x72, 0x75, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76,
- 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f,
- 0x74, 0x65, 0x22, 0x8b, 0x04, 0x0a, 0x1a, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69,
- 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x51, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x3d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46,
- 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65,
- 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
- 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x85, 0x03, 0x0a, 0x04, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x34, 0x0a, 0x30, 0x46,
- 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42,
- 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x41, 0x4e, 0x41,
- 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10,
- 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f,
- 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42,
- 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02,
- 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c,
- 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52,
- 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12,
- 0x34, 0x0a, 0x30, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e,
- 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
- 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b,
- 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44,
- 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10, 0x05, 0x12, 0x3e, 0x0a, 0x3a, 0x46, 0x50, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45,
- 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f,
- 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x41, 0x44,
- 0x56, 0x45, 0x52, 0x53, 0x41, 0x52, 0x59, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x46, 0x50, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x49, 0x54,
- 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07,
- 0x22, 0x2c, 0x0a, 0x05, 0x46, 0x69, 0x78, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x78,
- 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf,
- 0x02, 0x0a, 0x09, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x06,
- 0x6e, 0x76, 0x64, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x79, 0x70, 0x65, 0x4e, 0x56, 0x44, 0x41, 0x50, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x76, 0x64,
- 0x61, 0x70, 0x69, 0x12, 0x55, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
- 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c,
- 0x48, 0x00, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x1a, 0x55, 0x0a, 0x13, 0x44, 0x65,
- 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x56, 0x44, 0x41, 0x50,
- 0x49, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70, 0x65, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x65, 0x53, 0x65, 0x61, 0x72,
- 0x63, 0x68, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x65, 0x5f, 0x66, 0x6f, 0x75, 0x6e,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x70, 0x65, 0x46, 0x6f, 0x75, 0x6e,
- 0x64, 0x1a, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
- 0x70, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x22, 0x28, 0x0a, 0x12, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50,
- 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x23, 0x0a, 0x0d, 0x46, 0x69,
- 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22,
- 0x28, 0x0a, 0x12, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x46, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x44, 0x6f, 0x63,
- 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63,
- 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x76, 0x65, 0x73, 0x22,
- 0x4c, 0x0a, 0x0c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x3c, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f,
- 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2d, 0x0a,
- 0x1b, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x66, 0x0a, 0x19,
- 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
- 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x32, 0xdf, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
- 0x79, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x12, 0x91, 0x01, 0x0a, 0x0d, 0x4c, 0x69,
- 0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d,
- 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
- 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f,
- 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x6f, 0x63, 0x75,
- 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x12, 0xb6, 0x01,
- 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65,
- 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76,
- 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x76,
- 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x64, 0x76, 0x69, 0x73,
- 0x6f, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x64,
- 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
-}
-
-var (
- file_advisory_platform_proto_rawDescOnce sync.Once
- file_advisory_platform_proto_rawDescData = file_advisory_platform_proto_rawDesc
-)
-
-func file_advisory_platform_proto_rawDescGZIP() []byte {
- file_advisory_platform_proto_rawDescOnce.Do(func() {
- file_advisory_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_advisory_platform_proto_rawDescData)
- })
- return file_advisory_platform_proto_rawDescData
-}
-
-var file_advisory_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_advisory_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
-var file_advisory_platform_proto_goTypes = []interface{}{
- (Reference_Type)(0), // 0: chainguard.platform.advisory.Reference.Type
- (Severity_Type)(0), // 1: chainguard.platform.advisory.Severity.Type
- (FalsePositiveDetermination_Type)(0), // 2: chainguard.platform.advisory.FalsePositiveDetermination.Type
- (*VulnerabilityMetadata)(nil), // 3: chainguard.platform.advisory.VulnerabilityMetadata
- (*Reference)(nil), // 4: chainguard.platform.advisory.Reference
- (*Severity)(nil), // 5: chainguard.platform.advisory.Severity
- (*Advisory)(nil), // 6: chainguard.platform.advisory.Advisory
- (*Document)(nil), // 7: chainguard.platform.advisory.Document
- (*Event)(nil), // 8: chainguard.platform.advisory.Event
- (*TruePositiveDetermination)(nil), // 9: chainguard.platform.advisory.TruePositiveDetermination
- (*FalsePositiveDetermination)(nil), // 10: chainguard.platform.advisory.FalsePositiveDetermination
- (*Fixed)(nil), // 11: chainguard.platform.advisory.Fixed
- (*Detection)(nil), // 12: chainguard.platform.advisory.Detection
- (*AnalysisNotPlanned)(nil), // 13: chainguard.platform.advisory.AnalysisNotPlanned
- (*FixNotPlanned)(nil), // 14: chainguard.platform.advisory.FixNotPlanned
- (*PendingUpstreamFix)(nil), // 15: chainguard.platform.advisory.PendingUpstreamFix
- (*DocumentFilter)(nil), // 16: chainguard.platform.advisory.DocumentFilter
- (*DocumentList)(nil), // 17: chainguard.platform.advisory.DocumentList
- (*VulnerabilityMetadataFilter)(nil), // 18: chainguard.platform.advisory.VulnerabilityMetadataFilter
- (*VulnerabilityMetadataList)(nil), // 19: chainguard.platform.advisory.VulnerabilityMetadataList
- (*Detection_DetectionTypeNVDAPI)(nil), // 20: chainguard.platform.advisory.Detection.DetectionTypeNVDAPI
- (*Detection_DetectionTypeManual)(nil), // 21: chainguard.platform.advisory.Detection.DetectionTypeManual
- (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp
-}
-var file_advisory_platform_proto_depIdxs = []int32{
- 4, // 0: chainguard.platform.advisory.VulnerabilityMetadata.references:type_name -> chainguard.platform.advisory.Reference
- 5, // 1: chainguard.platform.advisory.VulnerabilityMetadata.severity:type_name -> chainguard.platform.advisory.Severity
- 0, // 2: chainguard.platform.advisory.Reference.type:type_name -> chainguard.platform.advisory.Reference.Type
- 1, // 3: chainguard.platform.advisory.Severity.type:type_name -> chainguard.platform.advisory.Severity.Type
- 8, // 4: chainguard.platform.advisory.Advisory.events:type_name -> chainguard.platform.advisory.Event
- 6, // 5: chainguard.platform.advisory.Document.advisories:type_name -> chainguard.platform.advisory.Advisory
- 22, // 6: chainguard.platform.advisory.Event.timestamp:type_name -> google.protobuf.Timestamp
- 9, // 7: chainguard.platform.advisory.Event.true_positive_determination:type_name -> chainguard.platform.advisory.TruePositiveDetermination
- 10, // 8: chainguard.platform.advisory.Event.false_positive_determination:type_name -> chainguard.platform.advisory.FalsePositiveDetermination
- 11, // 9: chainguard.platform.advisory.Event.fixed:type_name -> chainguard.platform.advisory.Fixed
- 12, // 10: chainguard.platform.advisory.Event.detection:type_name -> chainguard.platform.advisory.Detection
- 13, // 11: chainguard.platform.advisory.Event.analysis_not_planned:type_name -> chainguard.platform.advisory.AnalysisNotPlanned
- 14, // 12: chainguard.platform.advisory.Event.fix_not_planned:type_name -> chainguard.platform.advisory.FixNotPlanned
- 15, // 13: chainguard.platform.advisory.Event.pending_upstream_fix:type_name -> chainguard.platform.advisory.PendingUpstreamFix
- 2, // 14: chainguard.platform.advisory.FalsePositiveDetermination.type:type_name -> chainguard.platform.advisory.FalsePositiveDetermination.Type
- 20, // 15: chainguard.platform.advisory.Detection.nvdapi:type_name -> chainguard.platform.advisory.Detection.DetectionTypeNVDAPI
- 21, // 16: chainguard.platform.advisory.Detection.manual:type_name -> chainguard.platform.advisory.Detection.DetectionTypeManual
- 7, // 17: chainguard.platform.advisory.DocumentList.items:type_name -> chainguard.platform.advisory.Document
- 3, // 18: chainguard.platform.advisory.VulnerabilityMetadataList.items:type_name -> chainguard.platform.advisory.VulnerabilityMetadata
- 16, // 19: chainguard.platform.advisory.SecurityAdvisory.ListDocuments:input_type -> chainguard.platform.advisory.DocumentFilter
- 18, // 20: chainguard.platform.advisory.SecurityAdvisory.ListVulnerabilityMetadata:input_type -> chainguard.platform.advisory.VulnerabilityMetadataFilter
- 17, // 21: chainguard.platform.advisory.SecurityAdvisory.ListDocuments:output_type -> chainguard.platform.advisory.DocumentList
- 19, // 22: chainguard.platform.advisory.SecurityAdvisory.ListVulnerabilityMetadata:output_type -> chainguard.platform.advisory.VulnerabilityMetadataList
- 21, // [21:23] is the sub-list for method output_type
- 19, // [19:21] is the sub-list for method input_type
- 19, // [19:19] is the sub-list for extension type_name
- 19, // [19:19] is the sub-list for extension extendee
- 0, // [0:19] is the sub-list for field type_name
-}
-
-func init() { file_advisory_platform_proto_init() }
-func file_advisory_platform_proto_init() {
- if File_advisory_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_advisory_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Reference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Severity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Advisory); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Document); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Event); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TruePositiveDetermination); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FalsePositiveDetermination); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Fixed); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Detection); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AnalysisNotPlanned); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FixNotPlanned); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PendingUpstreamFix); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DocumentFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DocumentList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityMetadataFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityMetadataList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Detection_DetectionTypeNVDAPI); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_advisory_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Detection_DetectionTypeManual); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_advisory_platform_proto_msgTypes[5].OneofWrappers = []interface{}{
- (*Event_TruePositiveDetermination)(nil),
- (*Event_FalsePositiveDetermination)(nil),
- (*Event_Fixed)(nil),
- (*Event_Detection)(nil),
- (*Event_AnalysisNotPlanned)(nil),
- (*Event_FixNotPlanned)(nil),
- (*Event_PendingUpstreamFix)(nil),
- }
- file_advisory_platform_proto_msgTypes[9].OneofWrappers = []interface{}{
- (*Detection_Nvdapi)(nil),
- (*Detection_Manual)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_advisory_platform_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 19,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_advisory_platform_proto_goTypes,
- DependencyIndexes: file_advisory_platform_proto_depIdxs,
- EnumInfos: file_advisory_platform_proto_enumTypes,
- MessageInfos: file_advisory_platform_proto_msgTypes,
- }.Build()
- File_advisory_platform_proto = out.File
- file_advisory_platform_proto_rawDesc = nil
- file_advisory_platform_proto_goTypes = nil
- file_advisory_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.gw.go b/proto/platform/advisory/v1/advisory.platform.pb.gw.go
deleted file mode 100644
index 11cb9e4c..00000000
--- a/proto/platform/advisory/v1/advisory.platform.pb.gw.go
+++ /dev/null
@@ -1,251 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: advisory.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_SecurityAdvisory_ListDocuments_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SecurityAdvisory_ListDocuments_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityAdvisoryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DocumentFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListDocuments_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListDocuments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SecurityAdvisory_ListDocuments_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityAdvisoryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DocumentFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListDocuments_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListDocuments(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_SecurityAdvisory_ListVulnerabilityMetadata_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityAdvisoryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnerabilityMetadataFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListVulnerabilityMetadata_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListVulnerabilityMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityAdvisoryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnerabilityMetadataFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListVulnerabilityMetadata_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListVulnerabilityMetadata(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterSecurityAdvisoryHandlerServer registers the http handlers for service SecurityAdvisory to "mux".
-// UnaryRPC :call SecurityAdvisoryServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSecurityAdvisoryHandlerFromEndpoint instead.
-func RegisterSecurityAdvisoryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SecurityAdvisoryServer) error {
-
- mux.Handle("GET", pattern_SecurityAdvisory_ListDocuments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments", runtime.WithHTTPPathPattern("/advisory/v1/documents"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SecurityAdvisory_ListDocuments_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityAdvisory_ListDocuments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SecurityAdvisory_ListVulnerabilityMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata", runtime.WithHTTPPathPattern("/advisory/v1/metadata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterSecurityAdvisoryHandlerFromEndpoint is same as RegisterSecurityAdvisoryHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterSecurityAdvisoryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterSecurityAdvisoryHandler(ctx, mux, conn)
-}
-
-// RegisterSecurityAdvisoryHandler registers the http handlers for service SecurityAdvisory to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterSecurityAdvisoryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterSecurityAdvisoryHandlerClient(ctx, mux, NewSecurityAdvisoryClient(conn))
-}
-
-// RegisterSecurityAdvisoryHandlerClient registers the http handlers for service SecurityAdvisory
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SecurityAdvisoryClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SecurityAdvisoryClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "SecurityAdvisoryClient" to call the correct interceptors.
-func RegisterSecurityAdvisoryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SecurityAdvisoryClient) error {
-
- mux.Handle("GET", pattern_SecurityAdvisory_ListDocuments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments", runtime.WithHTTPPathPattern("/advisory/v1/documents"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SecurityAdvisory_ListDocuments_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityAdvisory_ListDocuments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SecurityAdvisory_ListVulnerabilityMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata", runtime.WithHTTPPathPattern("/advisory/v1/metadata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_SecurityAdvisory_ListDocuments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"advisory", "v1", "documents"}, ""))
-
- pattern_SecurityAdvisory_ListVulnerabilityMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"advisory", "v1", "metadata"}, ""))
-)
-
-var (
- forward_SecurityAdvisory_ListDocuments_0 = runtime.ForwardResponseMessage
-
- forward_SecurityAdvisory_ListVulnerabilityMetadata_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/advisory/v1/advisory.platform.proto b/proto/platform/advisory/v1/advisory.platform.proto
deleted file mode 100644
index 9c79b371..00000000
--- a/proto/platform/advisory/v1/advisory.platform.proto
+++ /dev/null
@@ -1,233 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/advisory/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.advisory.v1";
-option java_outer_classname = "PlatformAdvisoryProto";
-
-package chainguard.platform.advisory;
-
-import "google/api/annotations.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-
-service SecurityAdvisory {
- rpc ListDocuments(DocumentFilter) returns (DocumentList) {
- option (google.api.http) = {
- get: "/advisory/v1/documents"
- };
- option (chainguard.annotations.iam) = {
- // This method doesn't require authentication.
- disabled: {}
- };
- }
-
- rpc ListVulnerabilityMetadata(VulnerabilityMetadataFilter) returns (VulnerabilityMetadataList) {
- option (google.api.http) = {
- get: "/advisory/v1/metadata"
- };
- option (chainguard.annotations.iam) = {
- // This method doesn't require authentication.
- disabled: {}
- };
- }
-}
-
-message VulnerabilityMetadata {
- // id is the identifier of this specific vuln.
- string id = 1;
-
- string summary = 2;
-
- string details = 3;
-
- repeated Reference references = 4;
-
- repeated Severity severity = 5;
-}
-
-message Reference {
- Type type = 1;
-
- string url = 2;
-
- enum Type {
- // The "unset" value.
- UNSPECIFIED = 0;
-
- // Published security advisory for the vulnerability.
- ADVISORY = 1;
-
- // Article or blog post describing the vulnerability.
- ARTICLE = 2;
-
- // Scanner or tool that allows detection in prod environments.
- DETECTION = 3;
-
- // Social media discussion about vuln.
- DISCUSSION = 4;
-
- // Report on vuln.
- REPORT = 5;
-
- // Source code browser link to fix.
- FIX = 6;
-
- // Source code browser link to introduction of vuln.
- INTRODUCED = 7;
-
- // Home web page for package.
- PACKAGE = 8;
-
- // Demonstration of validity of vuln claim.
- EVIDENCE = 9;
-
- // Web page of unspecified kind.
- WEB = 10;
- }
-}
-
-message Severity {
- // CVSS version standard.
- Type type = 1;
-
- // Vector string representing CVSS score based on type.
- string score = 2;
-
- enum Type {
- // The "unset" value.
- UNSPECIFIED = 0;
-
- // CVSS v2
- CVSS_V2 = 1;
-
- // CVSS >= 3.0 and < 4.0
- CVSS_V3 = 2;
-
- // CVSS >= 4.0 and < 5.0
- CVSS_V4 = 3;
- }
-}
-
-message Advisory {
- // id is the identifier of this specific advisory.
- string id = 1;
-
- repeated Event events = 2;
-
- repeated string aliases = 3;
-}
-
-message Document {
- string id = 1;
-
- repeated Advisory advisories = 2;
-}
-
-message Event {
- google.protobuf.Timestamp timestamp = 1;
-
- oneof data {
- TruePositiveDetermination true_positive_determination = 10;
-
- FalsePositiveDetermination false_positive_determination = 11;
-
- Fixed fixed = 12;
-
- Detection detection = 13;
-
- AnalysisNotPlanned analysis_not_planned = 14;
-
- FixNotPlanned fix_not_planned = 15;
-
- PendingUpstreamFix pending_upstream_fix = 16;
- }
-}
-
-message TruePositiveDetermination {
- string note = 1;
-}
-
-message FalsePositiveDetermination {
- Type type = 1;
-
- string note = 2;
-
- enum Type {
- // The "unset" value.
- FPT_TYPE_UNSPECIFIED = 0;
-
- // VEX: vulnerable_code_not_present.
- FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED = 1;
-
- // VEX: component_not_present.
- FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH = 2;
-
- // VEX: vulnerable_code_not_present.
- FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED = 3;
-
- // VEX: vulnerable_code_not_present.
- FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE = 4;
-
- // VEX: vulnerable_code_not_in_execute_path.
- FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH = 5;
-
- // VEX: vulnerable_code_cannot_be_controlled_by_adversary.
- FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY = 6;
-
- // VEX: inline_mitigations_already_exist.
- FPT_TYPE_INLINE_MITIGATIONS_EXIST = 7;
- }
-}
-
-message Fixed {
- string fixed_version = 1;
-}
-
-message Detection {
- oneof type {
- DetectionTypeNVDAPI nvdapi = 1;
-
- DetectionTypeManual manual = 2;
- }
-
- message DetectionTypeNVDAPI {
- string cpe_searched = 1;
-
- string cpe_found = 2;
- }
-
- message DetectionTypeManual {}
-}
-
-message AnalysisNotPlanned {
- string note = 1;
-}
-
-message FixNotPlanned {
- string note = 1;
-}
-
-message PendingUpstreamFix {
- string note = 1;
-}
-
-message DocumentFilter {
- // id is the id of a package.
- string id = 1;
-
- repeated string cves = 2;
-}
-
-message DocumentList {
- repeated Document items = 1;
-}
-
-message VulnerabilityMetadataFilter {
- // id is the id of a vuln.
- string id = 1;
-}
-
-message VulnerabilityMetadataList {
- repeated VulnerabilityMetadata items = 1;
-}
diff --git a/proto/platform/advisory/v1/advisory.platform_grpc.pb.go b/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
deleted file mode 100644
index 21682e0a..00000000
--- a/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: advisory.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- SecurityAdvisory_ListDocuments_FullMethodName = "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments"
- SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName = "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata"
-)
-
-// SecurityAdvisoryClient is the client API for SecurityAdvisory service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SecurityAdvisoryClient interface {
- ListDocuments(ctx context.Context, in *DocumentFilter, opts ...grpc.CallOption) (*DocumentList, error)
- ListVulnerabilityMetadata(ctx context.Context, in *VulnerabilityMetadataFilter, opts ...grpc.CallOption) (*VulnerabilityMetadataList, error)
-}
-
-type securityAdvisoryClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSecurityAdvisoryClient(cc grpc.ClientConnInterface) SecurityAdvisoryClient {
- return &securityAdvisoryClient{cc}
-}
-
-func (c *securityAdvisoryClient) ListDocuments(ctx context.Context, in *DocumentFilter, opts ...grpc.CallOption) (*DocumentList, error) {
- out := new(DocumentList)
- err := c.cc.Invoke(ctx, SecurityAdvisory_ListDocuments_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *securityAdvisoryClient) ListVulnerabilityMetadata(ctx context.Context, in *VulnerabilityMetadataFilter, opts ...grpc.CallOption) (*VulnerabilityMetadataList, error) {
- out := new(VulnerabilityMetadataList)
- err := c.cc.Invoke(ctx, SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SecurityAdvisoryServer is the server API for SecurityAdvisory service.
-// All implementations must embed UnimplementedSecurityAdvisoryServer
-// for forward compatibility
-type SecurityAdvisoryServer interface {
- ListDocuments(context.Context, *DocumentFilter) (*DocumentList, error)
- ListVulnerabilityMetadata(context.Context, *VulnerabilityMetadataFilter) (*VulnerabilityMetadataList, error)
- mustEmbedUnimplementedSecurityAdvisoryServer()
-}
-
-// UnimplementedSecurityAdvisoryServer must be embedded to have forward compatible implementations.
-type UnimplementedSecurityAdvisoryServer struct {
-}
-
-func (UnimplementedSecurityAdvisoryServer) ListDocuments(context.Context, *DocumentFilter) (*DocumentList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListDocuments not implemented")
-}
-func (UnimplementedSecurityAdvisoryServer) ListVulnerabilityMetadata(context.Context, *VulnerabilityMetadataFilter) (*VulnerabilityMetadataList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListVulnerabilityMetadata not implemented")
-}
-func (UnimplementedSecurityAdvisoryServer) mustEmbedUnimplementedSecurityAdvisoryServer() {}
-
-// UnsafeSecurityAdvisoryServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SecurityAdvisoryServer will
-// result in compilation errors.
-type UnsafeSecurityAdvisoryServer interface {
- mustEmbedUnimplementedSecurityAdvisoryServer()
-}
-
-func RegisterSecurityAdvisoryServer(s grpc.ServiceRegistrar, srv SecurityAdvisoryServer) {
- s.RegisterService(&SecurityAdvisory_ServiceDesc, srv)
-}
-
-func _SecurityAdvisory_ListDocuments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DocumentFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SecurityAdvisoryServer).ListDocuments(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SecurityAdvisory_ListDocuments_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SecurityAdvisoryServer).ListDocuments(ctx, req.(*DocumentFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _SecurityAdvisory_ListVulnerabilityMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(VulnerabilityMetadataFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SecurityAdvisoryServer).ListVulnerabilityMetadata(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SecurityAdvisoryServer).ListVulnerabilityMetadata(ctx, req.(*VulnerabilityMetadataFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// SecurityAdvisory_ServiceDesc is the grpc.ServiceDesc for SecurityAdvisory service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var SecurityAdvisory_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.advisory.SecurityAdvisory",
- HandlerType: (*SecurityAdvisoryServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "ListDocuments",
- Handler: _SecurityAdvisory_ListDocuments_Handler,
- },
- {
- MethodName: "ListVulnerabilityMetadata",
- Handler: _SecurityAdvisory_ListVulnerabilityMetadata_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "advisory.platform.proto",
-}
diff --git a/proto/platform/advisory/v1/clients.go b/proto/platform/advisory/v1/clients.go
deleted file mode 100644
index 124dd007..00000000
--- a/proto/platform/advisory/v1/clients.go
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Clients interface {
- SecurityAdvisory() SecurityAdvisoryClient
-
- Close() error
-}
-
-func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
- uri, err := url.Parse(addr)
- if err != nil {
- return nil, fmt.Errorf("failed to parse advisory service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*uri)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("advisory.NewClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- advisory: NewSecurityAdvisoryClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- advisory: NewSecurityAdvisoryClient(conn),
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- advisory SecurityAdvisoryClient
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) SecurityAdvisory() SecurityAdvisoryClient {
- return c.advisory
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/advisory/v1/doc.go b/proto/platform/advisory/v1/doc.go
deleted file mode 100644
index 2692c77e..00000000
--- a/proto/platform/advisory/v1/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing Advisory interactions.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. advisory.platform.proto
-package v1
diff --git a/proto/platform/advisory/v1/test/advisory.go b/proto/platform/advisory/v1/test/advisory.go
deleted file mode 100644
index 34cd2f6e..00000000
--- a/proto/platform/advisory/v1/test/advisory.go
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
-)
-
-var _ advisory.Clients = (*MockSecurityAdvisoryClients)(nil)
-
-type MockSecurityAdvisoryClients struct {
- OnClose error
-
- SecurityAdvisoryClient MockSecurityAdvisoryClient
-}
-
-func (m MockSecurityAdvisoryClients) SecurityAdvisory() advisory.SecurityAdvisoryClient {
- return &m.SecurityAdvisoryClient
-}
-
-func (m MockSecurityAdvisoryClients) Close() error {
- return m.OnClose
-}
-
-var _ advisory.SecurityAdvisoryClient = (*MockSecurityAdvisoryClient)(nil)
-
-type MockSecurityAdvisoryClient struct {
- OnListDocuments []DocumentsOnList
- OnListVulnerabilityMetadata []VulnerabilityMetadataOnList
-}
-
-type DocumentsOnList struct {
- Given *advisory.DocumentFilter
- List *advisory.DocumentList
- Error error
-}
-
-type VulnerabilityMetadataOnList struct {
- Given *advisory.VulnerabilityMetadataFilter
- List *advisory.VulnerabilityMetadataList
- Error error
-}
-
-func (m MockSecurityAdvisoryClient) ListDocuments(_ context.Context, given *advisory.DocumentFilter, _ ...grpc.CallOption) (*advisory.DocumentList, error) { //nolint: revive
- for _, o := range m.OnListDocuments {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSecurityAdvisoryClient) ListVulnerabilityMetadata(_ context.Context, given *advisory.VulnerabilityMetadataFilter, _ ...grpc.CallOption) (*advisory.VulnerabilityMetadataList, error) { //nolint: revive
- for _, o := range m.OnListVulnerabilityMetadata {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/auth/v1/auth.platform.event.go b/proto/platform/auth/v1/auth.platform.event.go
deleted file mode 100644
index c770ef4b..00000000
--- a/proto/platform/auth/v1/auth.platform.event.go
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Session) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return x.GetGroup(), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Session) CloudEventsSubject() string {
- return ""
-}
diff --git a/proto/platform/auth/v1/auth.platform.pb.go b/proto/platform/auth/v1/auth.platform.pb.go
deleted file mode 100644
index e458bdf2..00000000
--- a/proto/platform/auth/v1/auth.platform.pb.go
+++ /dev/null
@@ -1,505 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: auth.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/iam/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type RegistrationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // code is an optional encoded invite code, which allows us to register
- // the caller's identity as a member of a particular group as a particular
- // role.
- // +optional
- Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
- // identity_id is an optional identity id. If the user already exists, this
- // by-passes identity registration and continues on to cluster registration
- // (if applicable)
- IdentityId string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
-}
-
-func (x *RegistrationRequest) Reset() {
- *x = RegistrationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RegistrationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RegistrationRequest) ProtoMessage() {}
-
-func (x *RegistrationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_auth_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RegistrationRequest.ProtoReflect.Descriptor instead.
-func (*RegistrationRequest) Descriptor() ([]byte, []int) {
- return file_auth_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RegistrationRequest) GetCode() string {
- if x != nil {
- return x.Code
- }
- return ""
-}
-
-func (x *RegistrationRequest) GetIdentityId() string {
- if x != nil {
- return x.IdentityId
- }
- return ""
-}
-
-type Session struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // identity, the Chainguard identity id.
- Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
- // group, the group this identity has joined by invitation, when an invite
- // code was supplied.
- Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
-}
-
-func (x *Session) Reset() {
- *x = Session{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Session) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Session) ProtoMessage() {}
-
-func (x *Session) ProtoReflect() protoreflect.Message {
- mi := &file_auth_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Session.ProtoReflect.Descriptor instead.
-func (*Session) Descriptor() ([]byte, []int) {
- return file_auth_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Session) GetIdentity() string {
- if x != nil {
- return x.Identity
- }
- return ""
-}
-
-func (x *Session) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-type WhoAmI struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Issuer is the issuer of the token.
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
- // The subject of the token.
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
- // Audience is who the token is intended for.
- Audience []string `protobuf:"bytes,3,rep,name=audience,proto3" json:"audience,omitempty"`
- // When the token expires.
- Expiry *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiry,proto3" json:"expiry,omitempty"`
- // With the token was issued.
- IssuedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=issued_at,json=issuedAt,proto3" json:"issued_at,omitempty"`
- // The capabilities referenced in the token.
- Capabilities []*WhoAmI_Capability `protobuf:"bytes,101,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
- // The upstream email for this token.
- Email string `protobuf:"bytes,102,opt,name=email,proto3" json:"email,omitempty"`
-}
-
-func (x *WhoAmI) Reset() {
- *x = WhoAmI{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WhoAmI) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WhoAmI) ProtoMessage() {}
-
-func (x *WhoAmI) ProtoReflect() protoreflect.Message {
- mi := &file_auth_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WhoAmI.ProtoReflect.Descriptor instead.
-func (*WhoAmI) Descriptor() ([]byte, []int) {
- return file_auth_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *WhoAmI) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *WhoAmI) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-func (x *WhoAmI) GetAudience() []string {
- if x != nil {
- return x.Audience
- }
- return nil
-}
-
-func (x *WhoAmI) GetExpiry() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiry
- }
- return nil
-}
-
-func (x *WhoAmI) GetIssuedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.IssuedAt
- }
- return nil
-}
-
-func (x *WhoAmI) GetCapabilities() []*WhoAmI_Capability {
- if x != nil {
- return x.Capabilities
- }
- return nil
-}
-
-func (x *WhoAmI) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-// --- Upstream fields ---
-type WhoAmI_Capability struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group of the bound role.
- Group *v1.Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- // role of the bound identity.
- Role *v1.Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
-}
-
-func (x *WhoAmI_Capability) Reset() {
- *x = WhoAmI_Capability{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WhoAmI_Capability) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WhoAmI_Capability) ProtoMessage() {}
-
-func (x *WhoAmI_Capability) ProtoReflect() protoreflect.Message {
- mi := &file_auth_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WhoAmI_Capability.ProtoReflect.Descriptor instead.
-func (*WhoAmI_Capability) Descriptor() ([]byte, []int) {
- return file_auth_platform_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *WhoAmI_Capability) GetGroup() *v1.Group {
- if x != nil {
- return x.Group
- }
- return nil
-}
-
-func (x *WhoAmI_Capability) GetRole() *v1.Role {
- if x != nil {
- return x.Role
- }
- return nil
-}
-
-var File_auth_platform_proto protoreflect.FileDescriptor
-
-var file_auth_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65,
- 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x23, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
- 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
- 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x3b, 0x0a, 0x07,
- 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa1, 0x03, 0x0a, 0x06, 0x57, 0x68,
- 0x6f, 0x41, 0x6d, 0x49, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
- 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
- 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e,
- 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06,
- 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64,
- 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12,
- 0x4f, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
- 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x75, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f,
- 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x32, 0xa4, 0x02,
- 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x22, 0x1b, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x6f,
- 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00, 0x12, 0xb8, 0x01, 0x0a, 0x08, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74,
- 0x68, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16,
- 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x30, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x42, 0x65, 0x0a, 0x23, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
- 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
-}
-
-var (
- file_auth_platform_proto_rawDescOnce sync.Once
- file_auth_platform_proto_rawDescData = file_auth_platform_proto_rawDesc
-)
-
-func file_auth_platform_proto_rawDescGZIP() []byte {
- file_auth_platform_proto_rawDescOnce.Do(func() {
- file_auth_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_platform_proto_rawDescData)
- })
- return file_auth_platform_proto_rawDescData
-}
-
-var file_auth_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_auth_platform_proto_goTypes = []interface{}{
- (*RegistrationRequest)(nil), // 0: chainguard.platform.auth.RegistrationRequest
- (*Session)(nil), // 1: chainguard.platform.auth.Session
- (*WhoAmI)(nil), // 2: chainguard.platform.auth.WhoAmI
- (*WhoAmI_Capability)(nil), // 3: chainguard.platform.auth.WhoAmI.Capability
- (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp
- (*v1.Group)(nil), // 5: chainguard.platform.iam.Group
- (*v1.Role)(nil), // 6: chainguard.platform.iam.Role
- (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
-}
-var file_auth_platform_proto_depIdxs = []int32{
- 4, // 0: chainguard.platform.auth.WhoAmI.expiry:type_name -> google.protobuf.Timestamp
- 4, // 1: chainguard.platform.auth.WhoAmI.issued_at:type_name -> google.protobuf.Timestamp
- 3, // 2: chainguard.platform.auth.WhoAmI.capabilities:type_name -> chainguard.platform.auth.WhoAmI.Capability
- 5, // 3: chainguard.platform.auth.WhoAmI.Capability.group:type_name -> chainguard.platform.iam.Group
- 6, // 4: chainguard.platform.auth.WhoAmI.Capability.role:type_name -> chainguard.platform.iam.Role
- 7, // 5: chainguard.platform.auth.Auth.Validate:input_type -> google.protobuf.Empty
- 0, // 6: chainguard.platform.auth.Auth.Register:input_type -> chainguard.platform.auth.RegistrationRequest
- 2, // 7: chainguard.platform.auth.Auth.Validate:output_type -> chainguard.platform.auth.WhoAmI
- 1, // 8: chainguard.platform.auth.Auth.Register:output_type -> chainguard.platform.auth.Session
- 7, // [7:9] is the sub-list for method output_type
- 5, // [5:7] 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_auth_platform_proto_init() }
-func file_auth_platform_proto_init() {
- if File_auth_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_auth_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegistrationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Session); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WhoAmI); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WhoAmI_Capability); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_auth_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_auth_platform_proto_goTypes,
- DependencyIndexes: file_auth_platform_proto_depIdxs,
- MessageInfos: file_auth_platform_proto_msgTypes,
- }.Build()
- File_auth_platform_proto = out.File
- file_auth_platform_proto_rawDesc = nil
- file_auth_platform_proto_goTypes = nil
- file_auth_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/auth/v1/auth.platform.pb.gw.go b/proto/platform/auth/v1/auth.platform.pb.gw.go
deleted file mode 100644
index 8aaefdda..00000000
--- a/proto/platform/auth/v1/auth.platform.pb.gw.go
+++ /dev/null
@@ -1,232 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: auth.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Auth_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq emptypb.Empty
- var metadata runtime.ServerMetadata
-
- msg, err := client.Validate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Auth_Validate_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq emptypb.Empty
- var metadata runtime.ServerMetadata
-
- msg, err := server.Validate(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Auth_Register_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RegistrationRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Register(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Auth_Register_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RegistrationRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Register(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterAuthHandlerServer registers the http handlers for service Auth to "mux".
-// UnaryRPC :call AuthServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAuthHandlerFromEndpoint instead.
-func RegisterAuthHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AuthServer) error {
-
- mux.Handle("GET", pattern_Auth_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Validate", runtime.WithHTTPPathPattern("/auth/v1/ok"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Auth_Validate_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Auth_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Auth_Register_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Register", runtime.WithHTTPPathPattern("/auth/v1/register"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Auth_Register_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Auth_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterAuthHandlerFromEndpoint is same as RegisterAuthHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterAuthHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterAuthHandler(ctx, mux, conn)
-}
-
-// RegisterAuthHandler registers the http handlers for service Auth to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterAuthHandlerClient(ctx, mux, NewAuthClient(conn))
-}
-
-// RegisterAuthHandlerClient registers the http handlers for service Auth
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AuthClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AuthClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "AuthClient" to call the correct interceptors.
-func RegisterAuthHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AuthClient) error {
-
- mux.Handle("GET", pattern_Auth_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Validate", runtime.WithHTTPPathPattern("/auth/v1/ok"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Auth_Validate_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Auth_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Auth_Register_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Register", runtime.WithHTTPPathPattern("/auth/v1/register"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Auth_Register_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Auth_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Auth_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v1", "ok"}, ""))
-
- pattern_Auth_Register_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v1", "register"}, ""))
-)
-
-var (
- forward_Auth_Validate_0 = runtime.ForwardResponseMessage
-
- forward_Auth_Register_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/auth/v1/auth.platform.proto b/proto/platform/auth/v1/auth.platform.proto
deleted file mode 100644
index f656e83a..00000000
--- a/proto/platform/auth/v1/auth.platform.proto
+++ /dev/null
@@ -1,114 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/auth/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.auth.v1";
-option java_outer_classname = "PlatformAuthProto";
-
-package chainguard.platform.auth;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/iam/v1/group.platform.proto";
-import "platform/iam/v1/role.platform.proto";
-import "google/protobuf/timestamp.proto";
-
-service Auth {
- rpc Validate(google.protobuf.Empty) returns (WhoAmI) {
- option (google.api.http) = {
- get: "/auth/v1/ok"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- // This API requires no capabilities, it simply
- // validates the token.
- }
- };
- }
-
- rpc Register(RegistrationRequest) returns (Session) {
- option (google.api.http) = {
- post: "/auth/v1/register"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- // This method accepts non-Chainguard tokens and
- // uses them to register a new user so that the
- // tokens can be sent through our STS.
- disabled: {}
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.auth.registered.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message RegistrationRequest {
- // code is an optional encoded invite code, which allows us to register
- // the caller's identity as a member of a particular group as a particular
- // role.
- // +optional
- string code = 1;
-
- // DEPRECATED: cluster_id is an optional cluster id, which simultaneously registers
- // a Cluster with the Identity. This path must specify an invite code, so
- // we know where in the IAM hierarchy to link the cluster.
- // string cluster_id = 2;
- reserved 2;
-
- // identity_id is an optional identity id. If the user already exists, this
- // by-passes identity registration and continues on to cluster registration
- // (if applicable)
- string identity_id = 3;
-
- // DEPRECATED: cluster_name is an optional name to give the cluster when one is
- // registered as part of the registration flow.
- // string cluster_name = 4;
- reserved 4;
-
- // DEPRECATED: cluster_description is an optional description to give the cluster
- // when one is registered as part of the registration flow.
- // string cluster_description = 5;
- reserved 5;
-
- // DEPRECATED: enforcer_options defines the enforcer options.
- // chainguard.platform.tenant.Cluster.EnforcerOptions enforcer_options = 6;
- reserved 6;
-}
-
-message Session {
- // identity, the Chainguard identity id.
- string identity = 1;
- // group, the group this identity has joined by invitation, when an invite
- // code was supplied.
- string group = 2;
-}
-
-message WhoAmI {
- // Issuer is the issuer of the token.
- string issuer = 1;
- // The subject of the token.
- string subject = 2;
- // Audience is who the token is intended for.
- repeated string audience = 3;
- // When the token expires.
- google.protobuf.Timestamp expiry = 4;
- // With the token was issued.
- google.protobuf.Timestamp issued_at = 5;
-
- // --- Upstream fields ---
- message Capability {
- // group of the bound role.
- chainguard.platform.iam.Group group = 1;
- // role of the bound identity.
- chainguard.platform.iam.Role role = 2;
- }
- // The capabilities referenced in the token.
- repeated Capability capabilities = 101;
- // The upstream email for this token.
- string email = 102;
-}
diff --git a/proto/platform/auth/v1/auth.platform_grpc.pb.go b/proto/platform/auth/v1/auth.platform_grpc.pb.go
deleted file mode 100644
index eef4dcd9..00000000
--- a/proto/platform/auth/v1/auth.platform_grpc.pb.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: auth.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Auth_Validate_FullMethodName = "/chainguard.platform.auth.Auth/Validate"
- Auth_Register_FullMethodName = "/chainguard.platform.auth.Auth/Register"
-)
-
-// AuthClient is the client API for Auth service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type AuthClient interface {
- Validate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*WhoAmI, error)
- Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*Session, error)
-}
-
-type authClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewAuthClient(cc grpc.ClientConnInterface) AuthClient {
- return &authClient{cc}
-}
-
-func (c *authClient) Validate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*WhoAmI, error) {
- out := new(WhoAmI)
- err := c.cc.Invoke(ctx, Auth_Validate_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *authClient) Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*Session, error) {
- out := new(Session)
- err := c.cc.Invoke(ctx, Auth_Register_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// AuthServer is the server API for Auth service.
-// All implementations must embed UnimplementedAuthServer
-// for forward compatibility
-type AuthServer interface {
- Validate(context.Context, *emptypb.Empty) (*WhoAmI, error)
- Register(context.Context, *RegistrationRequest) (*Session, error)
- mustEmbedUnimplementedAuthServer()
-}
-
-// UnimplementedAuthServer must be embedded to have forward compatible implementations.
-type UnimplementedAuthServer struct {
-}
-
-func (UnimplementedAuthServer) Validate(context.Context, *emptypb.Empty) (*WhoAmI, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented")
-}
-func (UnimplementedAuthServer) Register(context.Context, *RegistrationRequest) (*Session, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Register not implemented")
-}
-func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {}
-
-// UnsafeAuthServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to AuthServer will
-// result in compilation errors.
-type UnsafeAuthServer interface {
- mustEmbedUnimplementedAuthServer()
-}
-
-func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) {
- s.RegisterService(&Auth_ServiceDesc, srv)
-}
-
-func _Auth_Validate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(emptypb.Empty)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(AuthServer).Validate(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Auth_Validate_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(AuthServer).Validate(ctx, req.(*emptypb.Empty))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Auth_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RegistrationRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(AuthServer).Register(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Auth_Register_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(AuthServer).Register(ctx, req.(*RegistrationRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Auth_ServiceDesc is the grpc.ServiceDesc for Auth service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Auth_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.auth.Auth",
- HandlerType: (*AuthServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Validate",
- Handler: _Auth_Validate_Handler,
- },
- {
- MethodName: "Register",
- Handler: _Auth_Register_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "auth.platform.proto",
-}
diff --git a/proto/platform/auth/v1/doc.go b/proto/platform/auth/v1/doc.go
deleted file mode 100644
index c7008077..00000000
--- a/proto/platform/auth/v1/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing Auth interactions for the Console.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. auth.platform.proto
-package v1
diff --git a/proto/platform/auth/v1/test/mock_auth.go b/proto/platform/auth/v1/test/mock_auth.go
deleted file mode 100644
index a62ebe20..00000000
--- a/proto/platform/auth/v1/test/mock_auth.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- auth "chainguard.dev/sdk/proto/platform/auth/v1"
-)
-
-var _ auth.AuthClient = (*MockAuthClient)(nil)
-
-type MockAuthClient struct {
- OnValidate []AuthOnValidate
- OnRegister []AuthOnRegister
-}
-
-type FromContextFn func(context.Context) bool
-
-type AuthOnValidate struct {
- Given FromContextFn
- Validate *auth.WhoAmI
- Error error
-}
-
-type AuthOnRegister struct {
- Given *auth.RegistrationRequest
- Created *auth.Session
- CheckContext FromContextFn
- Error error
-}
-
-func (m MockAuthClient) Validate(ctx context.Context, _ *emptypb.Empty, _ ...grpc.CallOption) (*auth.WhoAmI, error) {
- for _, o := range m.OnValidate {
- if o.Given(ctx) {
- return o.Validate, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for context: %v", ctx)
-}
-
-func (m MockAuthClient) Register(ctx context.Context, given *auth.RegistrationRequest, _ ...grpc.CallOption) (*auth.Session, error) {
- for _, o := range m.OnRegister {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- if o.CheckContext == nil || o.CheckContext(ctx) {
- return o.Created, o.Error
- }
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-// --- Server ---
-
-type MockAuthServer struct {
- auth.UnimplementedAuthServer
- Client MockAuthClient
-}
-
-func (m MockAuthServer) Validate(ctx context.Context, empty *emptypb.Empty) (*auth.WhoAmI, error) {
- return m.Client.Validate(ctx, empty)
-}
-
-func (m MockAuthServer) Register(ctx context.Context, req *auth.RegistrationRequest) (*auth.Session, error) {
- return m.Client.Register(ctx, req)
-}
diff --git a/proto/platform/clients.go b/proto/platform/clients.go
deleted file mode 100644
index ad4f0736..00000000
--- a/proto/platform/clients.go
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package platform
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
- platformauth "chainguard.dev/sdk/proto/platform/auth/v1"
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
- platformoidc "chainguard.dev/sdk/proto/platform/oidc/v1"
- ping "chainguard.dev/sdk/proto/platform/ping/v1"
- registry "chainguard.dev/sdk/proto/platform/registry/v1"
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
- "google.golang.org/grpc/credentials"
-)
-
-type userAgentString struct{}
-
-type Clients interface {
- IAM() iam.Clients
- Tenant() tenant.Clients
- Registry() registry.Clients
- Advisory() advisory.Clients
- Ping() ping.Clients
-
- Close() error
-}
-
-func NewPlatformClients(ctx context.Context, apiURL string, cred credentials.PerRPCCredentials, addlOpts ...grpc.DialOption) (Clients, error) {
- apiURI, err := url.Parse(apiURL)
- if err != nil {
- return nil, fmt.Errorf("failed to parse iam service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*apiURI)
-
- // TODO: we may want to require transport security at some future point.
- if cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
- if ua := GetUserAgent(ctx); ua != "" {
- opts = append(opts, grpc.WithUserAgent(ua))
- }
- opts = append(opts, addlOpts...)
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("NewPlatformClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- iam: iam.NewClientsFromConnection(conn),
- tenant: tenant.NewClientsFromConnection(conn),
- registry: registry.NewClientsFromConnection(conn),
- advisory: advisory.NewClientsFromConnection(conn),
- ping: ping.NewClientsFromConnection(conn),
- conn: conn,
- }, nil
-}
-
-type clients struct {
- iam iam.Clients
- tenant tenant.Clients
- registry registry.Clients
- advisory advisory.Clients
- ping ping.Clients
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) IAM() iam.Clients {
- return c.iam
-}
-
-func (c *clients) Tenant() tenant.Clients {
- return c.tenant
-}
-
-func (c *clients) Registry() registry.Clients {
- return c.registry
-}
-
-func (c *clients) Advisory() advisory.Clients {
- return c.advisory
-}
-
-func (c *clients) Ping() ping.Clients {
- return c.ping
-}
-
-func (c *clients) Close() error {
- return c.conn.Close()
-}
-
-type OIDCClients interface {
- Auth() platformauth.AuthClient
- OIDC() platformoidc.Clients
- OIDCPing() ping.Clients
-
- Close() error
-}
-
-func NewOIDCClients(ctx context.Context, issuerURL string, cred credentials.PerRPCCredentials) (OIDCClients, error) {
- issuerURI, err := url.Parse(issuerURL)
- if err != nil {
- return nil, fmt.Errorf("failed to parse issuer URL: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*issuerURI)
-
- // TODO: we may want to require transport security at some future point.
- if cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
- if ua := GetUserAgent(ctx); ua != "" {
- opts = append(opts, grpc.WithUserAgent(ua))
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("NewOIDCClients: failed to connect to the OIDC issuer: %w", err)
- }
-
- return &oidcClients{
- auth: platformauth.NewAuthClient(conn),
- oidc: platformoidc.NewClientsFromConnection(conn),
- ping: ping.NewClientsFromConnection(conn),
- conn: conn,
- }, nil
-}
-
-type oidcClients struct {
- auth platformauth.AuthClient
- oidc platformoidc.Clients
- ping ping.Clients
-
- conn *grpc.ClientConn
-}
-
-func (c *oidcClients) Auth() platformauth.AuthClient {
- return c.auth
-}
-
-func (c *oidcClients) OIDC() platformoidc.Clients {
- return c.oidc
-}
-
-func (c *oidcClients) OIDCPing() ping.Clients {
- return c.ping
-}
-
-func (c *oidcClients) Close() error {
- return c.conn.Close()
-}
-
-// WithUserAgent adds a UserAgent string to the context
-// passed to the GRPC client
-func WithUserAgent(ctx context.Context, userAgent string) context.Context {
- if userAgent == "" {
- return ctx
- }
- return context.WithValue(ctx, userAgentString{}, userAgent)
-}
-
-// GetUserAgent extracts the user agent string from the context
-func GetUserAgent(ctx context.Context) string {
- if ua := ctx.Value(userAgentString{}); ua != nil {
- return ua.(string)
- }
- return ""
-}
diff --git a/proto/platform/common/v1/doc.go b/proto/platform/common/v1/doc.go
deleted file mode 100644
index 9c741dd3..00000000
--- a/proto/platform/common/v1/doc.go
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. uidp.platform.proto
-
-// Package common contains Chainguard shared types exposed to the console.
-package v1
diff --git a/proto/platform/common/v1/uidp.platform.pb.go b/proto/platform/common/v1/uidp.platform.pb.go
deleted file mode 100644
index 7bc5551c..00000000
--- a/proto/platform/common/v1/uidp.platform.pb.go
+++ /dev/null
@@ -1,184 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: uidp.platform.proto
-
-package v1
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type UIDPFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ancestors_of are groups reachable by repeated proceeding from child to parent.
- AncestorsOf string `protobuf:"bytes,1,opt,name=ancestors_of,json=ancestorsOf,proto3" json:"ancestors_of,omitempty"`
- // descendants_of are groups reachable by repeated proceeding from parent to child.
- DescendantsOf string `protobuf:"bytes,2,opt,name=descendants_of,json=descendantsOf,proto3" json:"descendants_of,omitempty"`
- // children_of are groups reachable by directly proceeding from parent to children.
- ChildrenOf string `protobuf:"bytes,3,opt,name=children_of,json=childrenOf,proto3" json:"children_of,omitempty"`
- // in_root resticts responses to root level resources (organizations, user identities)
- InRoot bool `protobuf:"varint,4,opt,name=in_root,json=inRoot,proto3" json:"in_root,omitempty"`
-}
-
-func (x *UIDPFilter) Reset() {
- *x = UIDPFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_uidp_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *UIDPFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UIDPFilter) ProtoMessage() {}
-
-func (x *UIDPFilter) ProtoReflect() protoreflect.Message {
- mi := &file_uidp_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use UIDPFilter.ProtoReflect.Descriptor instead.
-func (*UIDPFilter) Descriptor() ([]byte, []int) {
- return file_uidp_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *UIDPFilter) GetAncestorsOf() string {
- if x != nil {
- return x.AncestorsOf
- }
- return ""
-}
-
-func (x *UIDPFilter) GetDescendantsOf() string {
- if x != nil {
- return x.DescendantsOf
- }
- return ""
-}
-
-func (x *UIDPFilter) GetChildrenOf() string {
- if x != nil {
- return x.ChildrenOf
- }
- return ""
-}
-
-func (x *UIDPFilter) GetInRoot() bool {
- if x != nil {
- return x.InRoot
- }
- return false
-}
-
-var File_uidp_platform_proto protoreflect.FileDescriptor
-
-var file_uidp_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x66,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72,
- 0x73, 0x4f, 0x66, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e,
- 0x74, 0x73, 0x5f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73,
- 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68,
- 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x5f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x4f, 0x66, 0x12, 0x17, 0x0a, 0x07, 0x69,
- 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e,
- 0x52, 0x6f, 0x6f, 0x74, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x49, 0x44,
- 0x50, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_uidp_platform_proto_rawDescOnce sync.Once
- file_uidp_platform_proto_rawDescData = file_uidp_platform_proto_rawDesc
-)
-
-func file_uidp_platform_proto_rawDescGZIP() []byte {
- file_uidp_platform_proto_rawDescOnce.Do(func() {
- file_uidp_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_uidp_platform_proto_rawDescData)
- })
- return file_uidp_platform_proto_rawDescData
-}
-
-var file_uidp_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_uidp_platform_proto_goTypes = []interface{}{
- (*UIDPFilter)(nil), // 0: chainguard.platform.common.UIDPFilter
-}
-var file_uidp_platform_proto_depIdxs = []int32{
- 0, // [0:0] is the sub-list for method output_type
- 0, // [0:0] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_uidp_platform_proto_init() }
-func file_uidp_platform_proto_init() {
- if File_uidp_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_uidp_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UIDPFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_uidp_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 1,
- NumExtensions: 0,
- NumServices: 0,
- },
- GoTypes: file_uidp_platform_proto_goTypes,
- DependencyIndexes: file_uidp_platform_proto_depIdxs,
- MessageInfos: file_uidp_platform_proto_msgTypes,
- }.Build()
- File_uidp_platform_proto = out.File
- file_uidp_platform_proto_rawDesc = nil
- file_uidp_platform_proto_goTypes = nil
- file_uidp_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/common/v1/uidp.platform.proto b/proto/platform/common/v1/uidp.platform.proto
deleted file mode 100644
index 54f4539c..00000000
--- a/proto/platform/common/v1/uidp.platform.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/common/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.common.v1";
-option java_outer_classname = "PlatformCommonUIDPProto";
-
-package chainguard.platform.common;
-
-message UIDPFilter {
- // ancestors_of are groups reachable by repeated proceeding from child to parent.
- string ancestors_of = 1;
- // descendants_of are groups reachable by repeated proceeding from parent to child.
- string descendants_of = 2;
- // children_of are groups reachable by directly proceeding from parent to children.
- string children_of = 3;
- // in_root resticts responses to root level resources (organizations, user identities)
- bool in_root = 4;
-}
diff --git a/proto/platform/events/v1/doc.go b/proto/platform/events/v1/doc.go
deleted file mode 100644
index a8543a27..00000000
--- a/proto/platform/events/v1/doc.go
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Generate the proto definitions
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. subscriptions.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identities.platform.proto
-
-// Package events contains the GRPC client and server definitions
-// for implementing eventing interactions for the Console.
-package v1
diff --git a/proto/platform/events/v1/identities.platform.event.go b/proto/platform/events/v1/identities.platform.event.go
deleted file mode 100644
index 3b45f452..00000000
--- a/proto/platform/events/v1/identities.platform.event.go
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *IdentityMetadata) CloudEventsExtension(key string) (string, bool) { //nolint: revive
- return "", false
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *IdentityMetadata) CloudEventsSubject() string {
- return ""
-}
diff --git a/proto/platform/events/v1/identities.platform.pb.go b/proto/platform/events/v1/identities.platform.pb.go
deleted file mode 100644
index c3e04c0a..00000000
--- a/proto/platform/events/v1/identities.platform.pb.go
+++ /dev/null
@@ -1,416 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: identities.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Identity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is unique identifier of this specific identity.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // subject of OIDC ID tokens issued for this identity. Matchs the `sub`
- // claim.
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
- // issuer of the OIDC ID tokens issued for this identity. Matches the `iss`
- // claim.
- Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"`
- // Optional JWKS formatted public keys for the issuer. If supplied
- // verification of ID tokens is attempted using these keys instead of the
- // normal OIDC discovery path. This enables e.g clusters behing NAT to
- // authenticate.
- IssuerKeys string `protobuf:"bytes,4,opt,name=issuer_keys,json=issuerKeys,proto3" json:"issuer_keys,omitempty"`
- // Expiration of identity / issuer keys. After this date /time the issuer
- // keys will not be trusted. Defaults / maximum of 30 days after creation
- // time.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"`
-}
-
-func (x *Identity) Reset() {
- *x = Identity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identities_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity) ProtoMessage() {}
-
-func (x *Identity) ProtoReflect() protoreflect.Message {
- mi := &file_identities_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
-func (*Identity) Descriptor() ([]byte, []int) {
- return file_identities_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Identity) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Identity) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-func (x *Identity) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *Identity) GetIssuerKeys() string {
- if x != nil {
- return x.IssuerKeys
- }
- return ""
-}
-
-func (x *Identity) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
-type IdentityMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- OnboardingQuestions *IdentityMetadata_OnboardingQuestions `protobuf:"bytes,1,opt,name=onboarding_questions,json=onboardingQuestions,proto3" json:"onboarding_questions,omitempty"`
- // Output only. This is the name of the user.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // Whether the user has opted to receive updates from Chainguard.
- UpdatesOptIn bool `protobuf:"varint,3,opt,name=updatesOptIn,proto3" json:"updatesOptIn,omitempty"`
-}
-
-func (x *IdentityMetadata) Reset() {
- *x = IdentityMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identities_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityMetadata) ProtoMessage() {}
-
-func (x *IdentityMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_identities_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityMetadata.ProtoReflect.Descriptor instead.
-func (*IdentityMetadata) Descriptor() ([]byte, []int) {
- return file_identities_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *IdentityMetadata) GetOnboardingQuestions() *IdentityMetadata_OnboardingQuestions {
- if x != nil {
- return x.OnboardingQuestions
- }
- return nil
-}
-
-func (x *IdentityMetadata) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *IdentityMetadata) GetUpdatesOptIn() bool {
- if x != nil {
- return x.UpdatesOptIn
- }
- return false
-}
-
-type IdentityMetadata_OnboardingQuestions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- CompanyName string `protobuf:"bytes,1,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"`
- Providers []string `protobuf:"bytes,2,rep,name=providers,proto3" json:"providers,omitempty"`
- Product string `protobuf:"bytes,3,opt,name=product,proto3" json:"product,omitempty"`
-}
-
-func (x *IdentityMetadata_OnboardingQuestions) Reset() {
- *x = IdentityMetadata_OnboardingQuestions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identities_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityMetadata_OnboardingQuestions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityMetadata_OnboardingQuestions) ProtoMessage() {}
-
-func (x *IdentityMetadata_OnboardingQuestions) ProtoReflect() protoreflect.Message {
- mi := &file_identities_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityMetadata_OnboardingQuestions.ProtoReflect.Descriptor instead.
-func (*IdentityMetadata_OnboardingQuestions) Descriptor() ([]byte, []int) {
- return file_identities_platform_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *IdentityMetadata_OnboardingQuestions) GetCompanyName() string {
- if x != nil {
- return x.CompanyName
- }
- return ""
-}
-
-func (x *IdentityMetadata_OnboardingQuestions) GetProviders() []string {
- if x != nil {
- return x.Providers
- }
- return nil
-}
-
-func (x *IdentityMetadata_OnboardingQuestions) GetProduct() string {
- if x != nil {
- return x.Product
- }
- return ""
-}
-
-var File_identities_platform_proto protoreflect.FileDescriptor
-
-var file_identities_platform_proto_rawDesc = []byte{
- 0x0a, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12,
- 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65,
- 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73,
- 0x73, 0x75, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x02, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x73, 0x0a, 0x14, 0x6f, 0x6e, 0x62,
- 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67,
- 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61,
- 0x72, 0x64, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x4f, 0x70, 0x74,
- 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x73, 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x1a, 0x70, 0x0a, 0x13, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72,
- 0x64, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a,
- 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65,
- 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18,
- 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x32, 0xec, 0x02, 0x0a, 0x0a, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
- 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x85, 0x07, 0x10, 0x01, 0x12, 0xd9, 0x01, 0x0a, 0x0e,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x2c, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69,
- 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
- 0x0b, 0x35, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x75, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31,
- 0x42, 0x1d, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
- 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_identities_platform_proto_rawDescOnce sync.Once
- file_identities_platform_proto_rawDescData = file_identities_platform_proto_rawDesc
-)
-
-func file_identities_platform_proto_rawDescGZIP() []byte {
- file_identities_platform_proto_rawDescOnce.Do(func() {
- file_identities_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identities_platform_proto_rawDescData)
- })
- return file_identities_platform_proto_rawDescData
-}
-
-var file_identities_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_identities_platform_proto_goTypes = []interface{}{
- (*Identity)(nil), // 0: chainguard.platform.events.Identity
- (*IdentityMetadata)(nil), // 1: chainguard.platform.events.IdentityMetadata
- (*IdentityMetadata_OnboardingQuestions)(nil), // 2: chainguard.platform.events.IdentityMetadata.OnboardingQuestions
- (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
-}
-var file_identities_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.events.Identity.expiration:type_name -> google.protobuf.Timestamp
- 2, // 1: chainguard.platform.events.IdentityMetadata.onboarding_questions:type_name -> chainguard.platform.events.IdentityMetadata.OnboardingQuestions
- 0, // 2: chainguard.platform.events.Identities.Create:input_type -> chainguard.platform.events.Identity
- 1, // 3: chainguard.platform.events.Identities.UpdateMetadata:input_type -> chainguard.platform.events.IdentityMetadata
- 0, // 4: chainguard.platform.events.Identities.Create:output_type -> chainguard.platform.events.Identity
- 1, // 5: chainguard.platform.events.Identities.UpdateMetadata:output_type -> chainguard.platform.events.IdentityMetadata
- 4, // [4:6] is the sub-list for method output_type
- 2, // [2:4] 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_identities_platform_proto_init() }
-func file_identities_platform_proto_init() {
- if File_identities_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_identities_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identities_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identities_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityMetadata_OnboardingQuestions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_identities_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_identities_platform_proto_goTypes,
- DependencyIndexes: file_identities_platform_proto_depIdxs,
- MessageInfos: file_identities_platform_proto_msgTypes,
- }.Build()
- File_identities_platform_proto = out.File
- file_identities_platform_proto_rawDesc = nil
- file_identities_platform_proto_goTypes = nil
- file_identities_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/events/v1/identities.platform.pb.gw.go b/proto/platform/events/v1/identities.platform.pb.gw.go
deleted file mode 100644
index fde3a8c0..00000000
--- a/proto/platform/events/v1/identities.platform.pb.gw.go
+++ /dev/null
@@ -1,247 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: identities.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Identity
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Identity
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Identities_UpdateMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityMetadata
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.UpdateMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_UpdateMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityMetadata
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.UpdateMetadata(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterIdentitiesHandlerServer registers the http handlers for service Identities to "mux".
-// UnaryRPC :call IdentitiesServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentitiesHandlerFromEndpoint instead.
-func RegisterIdentitiesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentitiesServer) error {
-
- mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PATCH", pattern_Identities_UpdateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Identities/UpdateMetadata", runtime.WithHTTPPathPattern("/iam/v1/identities/metadata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_UpdateMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_UpdateMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterIdentitiesHandlerFromEndpoint is same as RegisterIdentitiesHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterIdentitiesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterIdentitiesHandler(ctx, mux, conn)
-}
-
-// RegisterIdentitiesHandler registers the http handlers for service Identities to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterIdentitiesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterIdentitiesHandlerClient(ctx, mux, NewIdentitiesClient(conn))
-}
-
-// RegisterIdentitiesHandlerClient registers the http handlers for service Identities
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentitiesClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentitiesClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "IdentitiesClient" to call the correct interceptors.
-func RegisterIdentitiesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentitiesClient) error {
-
- mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PATCH", pattern_Identities_UpdateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Identities/UpdateMetadata", runtime.WithHTTPPathPattern("/iam/v1/identities/metadata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_UpdateMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_UpdateMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Identities_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identities"}, ""))
-
- pattern_Identities_UpdateMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"iam", "v1", "identities", "metadata"}, ""))
-)
-
-var (
- forward_Identities_Create_0 = runtime.ForwardResponseMessage
-
- forward_Identities_UpdateMetadata_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/events/v1/identities.platform.proto b/proto/platform/events/v1/identities.platform.proto
deleted file mode 100644
index de4f96be..00000000
--- a/proto/platform/events/v1/identities.platform.proto
+++ /dev/null
@@ -1,97 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/events/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.events.v1";
-option java_outer_classname = "PlatformEventsIdentitiesProto";
-
-package chainguard.platform.events;
-
-import "google/protobuf/timestamp.proto";
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-
-service Identities {
- rpc Create(Identity) returns (Identity) {
- option (google.api.http) = {
- post: "/iam/v1/identities"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- // TODO(nsmith): The authentications story here is pretty rough. This
- // identity creation must be an unscoped permission because they aren't
- // nested under IAM groups.... we need a better scoping story here. Is
- // there any reason we can't nest these under a group?
- capabilities: [CAP_IAM_IDENTITY_CREATE]
- unscoped: true
- }
- };
- }
-
- rpc UpdateMetadata(IdentityMetadata) returns (IdentityMetadata) {
- option (google.api.http) = {
- patch: "/iam/v1/identities/metadata"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- // Authentication will be implicit in the handler - the updated identity
- // is the one from the token.
- enabled: {
- capabilities: []
- unscoped: true
- }
- };
- option (chainguard.annotations.events) = {
- // Emit an internal event to track user onboarding.
- type: "dev.chainguard.api.iam.identity.metadata.updated.v1"
- audience: INTERNAL
- };
- }
-
- // NB: List, Update and Delete unimplemented here as its unclear how
- // permissions would work. Like how do we scope list to the identities a user
- // _should_ have access to instead of the global set of all identities
- // (insert yikes energy).
-}
-
-message Identity {
- // id is unique identifier of this specific identity.
- string id = 1;
-
- // subject of OIDC ID tokens issued for this identity. Matchs the `sub`
- // claim.
- string subject = 2;
-
- // issuer of the OIDC ID tokens issued for this identity. Matches the `iss`
- // claim.
- string issuer = 3;
-
- // Optional JWKS formatted public keys for the issuer. If supplied
- // verification of ID tokens is attempted using these keys instead of the
- // normal OIDC discovery path. This enables e.g clusters behing NAT to
- // authenticate.
- string issuer_keys = 4;
-
- // Expiration of identity / issuer keys. After this date /time the issuer
- // keys will not be trusted. Defaults / maximum of 30 days after creation
- // time.
- google.protobuf.Timestamp expiration = 5;
-}
-
-message IdentityMetadata {
- OnboardingQuestions onboarding_questions = 1;
-
- // Output only. This is the name of the user.
- string name = 2;
-
- // Whether the user has opted to receive updates from Chainguard.
- bool updatesOptIn = 3;
-
- message OnboardingQuestions {
- string company_name = 1;
- repeated string providers = 2;
- string product = 3;
- }
-}
diff --git a/proto/platform/events/v1/identities.platform_grpc.pb.go b/proto/platform/events/v1/identities.platform_grpc.pb.go
deleted file mode 100644
index 7b97ffcd..00000000
--- a/proto/platform/events/v1/identities.platform_grpc.pb.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: identities.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Identities_Create_FullMethodName = "/chainguard.platform.events.Identities/Create"
- Identities_UpdateMetadata_FullMethodName = "/chainguard.platform.events.Identities/UpdateMetadata"
-)
-
-// IdentitiesClient is the client API for Identities service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type IdentitiesClient interface {
- Create(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error)
- UpdateMetadata(ctx context.Context, in *IdentityMetadata, opts ...grpc.CallOption) (*IdentityMetadata, error)
-}
-
-type identitiesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewIdentitiesClient(cc grpc.ClientConnInterface) IdentitiesClient {
- return &identitiesClient{cc}
-}
-
-func (c *identitiesClient) Create(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error) {
- out := new(Identity)
- err := c.cc.Invoke(ctx, Identities_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identitiesClient) UpdateMetadata(ctx context.Context, in *IdentityMetadata, opts ...grpc.CallOption) (*IdentityMetadata, error) {
- out := new(IdentityMetadata)
- err := c.cc.Invoke(ctx, Identities_UpdateMetadata_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// IdentitiesServer is the server API for Identities service.
-// All implementations must embed UnimplementedIdentitiesServer
-// for forward compatibility
-type IdentitiesServer interface {
- Create(context.Context, *Identity) (*Identity, error)
- UpdateMetadata(context.Context, *IdentityMetadata) (*IdentityMetadata, error)
- mustEmbedUnimplementedIdentitiesServer()
-}
-
-// UnimplementedIdentitiesServer must be embedded to have forward compatible implementations.
-type UnimplementedIdentitiesServer struct {
-}
-
-func (UnimplementedIdentitiesServer) Create(context.Context, *Identity) (*Identity, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedIdentitiesServer) UpdateMetadata(context.Context, *IdentityMetadata) (*IdentityMetadata, error) {
- return nil, status.Errorf(codes.Unimplemented, "method UpdateMetadata not implemented")
-}
-func (UnimplementedIdentitiesServer) mustEmbedUnimplementedIdentitiesServer() {}
-
-// UnsafeIdentitiesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to IdentitiesServer will
-// result in compilation errors.
-type UnsafeIdentitiesServer interface {
- mustEmbedUnimplementedIdentitiesServer()
-}
-
-func RegisterIdentitiesServer(s grpc.ServiceRegistrar, srv IdentitiesServer) {
- s.RegisterService(&Identities_ServiceDesc, srv)
-}
-
-func _Identities_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Identity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).Create(ctx, req.(*Identity))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Identities_UpdateMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(IdentityMetadata)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).UpdateMetadata(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_UpdateMetadata_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).UpdateMetadata(ctx, req.(*IdentityMetadata))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Identities_ServiceDesc is the grpc.ServiceDesc for Identities service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Identities_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.events.Identities",
- HandlerType: (*IdentitiesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Identities_Create_Handler,
- },
- {
- MethodName: "UpdateMetadata",
- Handler: _Identities_UpdateMetadata_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "identities.platform.proto",
-}
diff --git a/proto/platform/events/v1/subscriptions.platform.event.go b/proto/platform/events/v1/subscriptions.platform.event.go
deleted file mode 100644
index a2eda990..00000000
--- a/proto/platform/events/v1/subscriptions.platform.event.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Subscription) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Subscription) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteSubscriptionRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteSubscriptionRequest) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
-func (x *DeleteSubscriptionRequest) CloudEventsRedact() interface{} {
- return nil
-}
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.go b/proto/platform/events/v1/subscriptions.platform.pb.go
deleted file mode 100644
index cc923951..00000000
--- a/proto/platform/events/v1/subscriptions.platform.pb.go
+++ /dev/null
@@ -1,510 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: subscriptions.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type CreateSubscriptionRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group UIDP path under which the new subscription is associated.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Subscription is the subscription to create;
- Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"`
-}
-
-func (x *CreateSubscriptionRequest) Reset() {
- *x = CreateSubscriptionRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_subscriptions_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateSubscriptionRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateSubscriptionRequest) ProtoMessage() {}
-
-func (x *CreateSubscriptionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_subscriptions_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateSubscriptionRequest.ProtoReflect.Descriptor instead.
-func (*CreateSubscriptionRequest) Descriptor() ([]byte, []int) {
- return file_subscriptions_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CreateSubscriptionRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateSubscriptionRequest) GetSubscription() *Subscription {
- if x != nil {
- return x.Subscription
- }
- return nil
-}
-
-type Subscription struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is identifier of this specific subscription.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // sink is the address to which events shall be delivered using the selected protocol.
- Sink string `protobuf:"bytes,2,opt,name=sink,proto3" json:"sink,omitempty"`
-}
-
-func (x *Subscription) Reset() {
- *x = Subscription{}
- if protoimpl.UnsafeEnabled {
- mi := &file_subscriptions_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Subscription) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Subscription) ProtoMessage() {}
-
-func (x *Subscription) ProtoReflect() protoreflect.Message {
- mi := &file_subscriptions_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Subscription.ProtoReflect.Descriptor instead.
-func (*Subscription) Descriptor() ([]byte, []int) {
- return file_subscriptions_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Subscription) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Subscription) GetSink() string {
- if x != nil {
- return x.Sink
- }
- return ""
-}
-
-type SubscriptionList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Subscription `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *SubscriptionList) Reset() {
- *x = SubscriptionList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_subscriptions_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubscriptionList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscriptionList) ProtoMessage() {}
-
-func (x *SubscriptionList) ProtoReflect() protoreflect.Message {
- mi := &file_subscriptions_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubscriptionList.ProtoReflect.Descriptor instead.
-func (*SubscriptionList) Descriptor() ([]byte, []int) {
- return file_subscriptions_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *SubscriptionList) GetItems() []*Subscription {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type SubscriptionFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filers records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *SubscriptionFilter) Reset() {
- *x = SubscriptionFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_subscriptions_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SubscriptionFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscriptionFilter) ProtoMessage() {}
-
-func (x *SubscriptionFilter) ProtoReflect() protoreflect.Message {
- mi := &file_subscriptions_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SubscriptionFilter.ProtoReflect.Descriptor instead.
-func (*SubscriptionFilter) Descriptor() ([]byte, []int) {
- return file_subscriptions_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SubscriptionFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *SubscriptionFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-type DeleteSubscriptionRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteSubscriptionRequest) Reset() {
- *x = DeleteSubscriptionRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_subscriptions_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteSubscriptionRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteSubscriptionRequest) ProtoMessage() {}
-
-func (x *DeleteSubscriptionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_subscriptions_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteSubscriptionRequest.ProtoReflect.Descriptor instead.
-func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) {
- return file_subscriptions_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *DeleteSubscriptionRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-var File_subscriptions_platform_proto protoreflect.FileDescriptor
-
-var file_subscriptions_platform_proto_rawDesc = []byte{
- 0x0a, 0x1c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
- 0x8e, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a,
- 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x6e, 0x6b,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x6e, 0x6b, 0x22, 0x52, 0x0a, 0x10,
- 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x22, 0x60, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x22, 0x33, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xf2, 0x04, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf7, 0x01, 0x0a, 0x06, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x0c,
- 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x2f, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xdd,
- 0x0b, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3c, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73,
- 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xdf, 0x0b, 0x10, 0x01, 0x12, 0xcf, 0x01, 0x0a, 0x06, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xe0, 0x0b, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3c,
- 0x0a, 0x31, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x73, 0x75, 0x62, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x77, 0x0a, 0x25,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
- 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x1f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_subscriptions_platform_proto_rawDescOnce sync.Once
- file_subscriptions_platform_proto_rawDescData = file_subscriptions_platform_proto_rawDesc
-)
-
-func file_subscriptions_platform_proto_rawDescGZIP() []byte {
- file_subscriptions_platform_proto_rawDescOnce.Do(func() {
- file_subscriptions_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_subscriptions_platform_proto_rawDescData)
- })
- return file_subscriptions_platform_proto_rawDescData
-}
-
-var file_subscriptions_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_subscriptions_platform_proto_goTypes = []interface{}{
- (*CreateSubscriptionRequest)(nil), // 0: chainguard.platform.events.CreateSubscriptionRequest
- (*Subscription)(nil), // 1: chainguard.platform.events.Subscription
- (*SubscriptionList)(nil), // 2: chainguard.platform.events.SubscriptionList
- (*SubscriptionFilter)(nil), // 3: chainguard.platform.events.SubscriptionFilter
- (*DeleteSubscriptionRequest)(nil), // 4: chainguard.platform.events.DeleteSubscriptionRequest
- (*v1.UIDPFilter)(nil), // 5: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 6: google.protobuf.Empty
-}
-var file_subscriptions_platform_proto_depIdxs = []int32{
- 1, // 0: chainguard.platform.events.CreateSubscriptionRequest.subscription:type_name -> chainguard.platform.events.Subscription
- 1, // 1: chainguard.platform.events.SubscriptionList.items:type_name -> chainguard.platform.events.Subscription
- 5, // 2: chainguard.platform.events.SubscriptionFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 3: chainguard.platform.events.Subscriptions.Create:input_type -> chainguard.platform.events.CreateSubscriptionRequest
- 3, // 4: chainguard.platform.events.Subscriptions.List:input_type -> chainguard.platform.events.SubscriptionFilter
- 4, // 5: chainguard.platform.events.Subscriptions.Delete:input_type -> chainguard.platform.events.DeleteSubscriptionRequest
- 1, // 6: chainguard.platform.events.Subscriptions.Create:output_type -> chainguard.platform.events.Subscription
- 2, // 7: chainguard.platform.events.Subscriptions.List:output_type -> chainguard.platform.events.SubscriptionList
- 6, // 8: chainguard.platform.events.Subscriptions.Delete:output_type -> google.protobuf.Empty
- 6, // [6:9] is the sub-list for method output_type
- 3, // [3:6] 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_subscriptions_platform_proto_init() }
-func file_subscriptions_platform_proto_init() {
- if File_subscriptions_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_subscriptions_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateSubscriptionRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_subscriptions_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Subscription); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_subscriptions_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubscriptionList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_subscriptions_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SubscriptionFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_subscriptions_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteSubscriptionRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_subscriptions_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 5,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_subscriptions_platform_proto_goTypes,
- DependencyIndexes: file_subscriptions_platform_proto_depIdxs,
- MessageInfos: file_subscriptions_platform_proto_msgTypes,
- }.Build()
- File_subscriptions_platform_proto = out.File
- file_subscriptions_platform_proto_rawDesc = nil
- file_subscriptions_platform_proto_goTypes = nil
- file_subscriptions_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.gw.go b/proto/platform/events/v1/subscriptions.platform.pb.gw.go
deleted file mode 100644
index 5e69dba2..00000000
--- a/proto/platform/events/v1/subscriptions.platform.pb.gw.go
+++ /dev/null
@@ -1,384 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: subscriptions.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Subscriptions_Create_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateSubscriptionRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Subscription); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Subscriptions_Create_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateSubscriptionRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Subscription); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Subscriptions_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Subscriptions_List_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SubscriptionFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Subscriptions_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Subscriptions_List_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SubscriptionFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Subscriptions_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Subscriptions_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteSubscriptionRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Subscriptions_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteSubscriptionRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterSubscriptionsHandlerServer registers the http handlers for service Subscriptions to "mux".
-// UnaryRPC :call SubscriptionsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSubscriptionsHandlerFromEndpoint instead.
-func RegisterSubscriptionsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SubscriptionsServer) error {
-
- mux.Handle("POST", pattern_Subscriptions_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Create", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Subscriptions_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Subscriptions_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/List", runtime.WithHTTPPathPattern("/events/v1/subscriptions"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Subscriptions_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Subscriptions_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Delete", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Subscriptions_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterSubscriptionsHandlerFromEndpoint is same as RegisterSubscriptionsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterSubscriptionsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterSubscriptionsHandler(ctx, mux, conn)
-}
-
-// RegisterSubscriptionsHandler registers the http handlers for service Subscriptions to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterSubscriptionsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterSubscriptionsHandlerClient(ctx, mux, NewSubscriptionsClient(conn))
-}
-
-// RegisterSubscriptionsHandlerClient registers the http handlers for service Subscriptions
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SubscriptionsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SubscriptionsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "SubscriptionsClient" to call the correct interceptors.
-func RegisterSubscriptionsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SubscriptionsClient) error {
-
- mux.Handle("POST", pattern_Subscriptions_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Create", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Subscriptions_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Subscriptions_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/List", runtime.WithHTTPPathPattern("/events/v1/subscriptions"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Subscriptions_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Subscriptions_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Delete", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Subscriptions_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Subscriptions_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Subscriptions_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"events", "v1", "subscriptions", "parent_id"}, ""))
-
- pattern_Subscriptions_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"events", "v1", "subscriptions"}, ""))
-
- pattern_Subscriptions_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"events", "v1", "subscriptions", "id"}, ""))
-)
-
-var (
- forward_Subscriptions_Create_0 = runtime.ForwardResponseMessage
-
- forward_Subscriptions_List_0 = runtime.ForwardResponseMessage
-
- forward_Subscriptions_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/events/v1/subscriptions.platform.proto b/proto/platform/events/v1/subscriptions.platform.proto
deleted file mode 100644
index c105890b..00000000
--- a/proto/platform/events/v1/subscriptions.platform.proto
+++ /dev/null
@@ -1,92 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/events/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.events.v1";
-option java_outer_classname = "PlatformEventsSubscriptionProto";
-
-package chainguard.platform.events;
-
-import "google/protobuf/empty.proto";
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Subscriptions {
- rpc Create(CreateSubscriptionRequest) returns (Subscription) {
- option (google.api.http) = {
- post: "/events/v1/subscriptions/{parent_id=**}"
- body: "subscription"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_EVENTS_SUBSCRIPTION_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.events.subscription.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(SubscriptionFilter) returns (SubscriptionList) {
- option (google.api.http) = {
- get: "/events/v1/subscriptions"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_EVENTS_SUBSCRIPTION_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteSubscriptionRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/events/v1/subscriptions/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_EVENTS_SUBSCRIPTION_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.events.subscription.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message CreateSubscriptionRequest {
- // parent_id, The Group UIDP path under which the new subscription is associated.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
- // Subscription is the subscription to create;
- Subscription subscription = 2;
-}
-
-message Subscription {
- // id is identifier of this specific subscription.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
- // sink is the address to which events shall be delivered using the selected protocol.
- string sink = 2;
-}
-
-message SubscriptionList {
- repeated Subscription items = 1;
-}
-
-message SubscriptionFilter {
- // id is the exact UIDP of the record.
- string id = 1;
-
- // uidp filers records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 2;
-}
-
-message DeleteSubscriptionRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
diff --git a/proto/platform/events/v1/subscriptions.platform_grpc.pb.go b/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
deleted file mode 100644
index ce225769..00000000
--- a/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
+++ /dev/null
@@ -1,184 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: subscriptions.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Subscriptions_Create_FullMethodName = "/chainguard.platform.events.Subscriptions/Create"
- Subscriptions_List_FullMethodName = "/chainguard.platform.events.Subscriptions/List"
- Subscriptions_Delete_FullMethodName = "/chainguard.platform.events.Subscriptions/Delete"
-)
-
-// SubscriptionsClient is the client API for Subscriptions service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SubscriptionsClient interface {
- Create(ctx context.Context, in *CreateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error)
- List(ctx context.Context, in *SubscriptionFilter, opts ...grpc.CallOption) (*SubscriptionList, error)
- Delete(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type subscriptionsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSubscriptionsClient(cc grpc.ClientConnInterface) SubscriptionsClient {
- return &subscriptionsClient{cc}
-}
-
-func (c *subscriptionsClient) Create(ctx context.Context, in *CreateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) {
- out := new(Subscription)
- err := c.cc.Invoke(ctx, Subscriptions_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *subscriptionsClient) List(ctx context.Context, in *SubscriptionFilter, opts ...grpc.CallOption) (*SubscriptionList, error) {
- out := new(SubscriptionList)
- err := c.cc.Invoke(ctx, Subscriptions_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *subscriptionsClient) Delete(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Subscriptions_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SubscriptionsServer is the server API for Subscriptions service.
-// All implementations must embed UnimplementedSubscriptionsServer
-// for forward compatibility
-type SubscriptionsServer interface {
- Create(context.Context, *CreateSubscriptionRequest) (*Subscription, error)
- List(context.Context, *SubscriptionFilter) (*SubscriptionList, error)
- Delete(context.Context, *DeleteSubscriptionRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedSubscriptionsServer()
-}
-
-// UnimplementedSubscriptionsServer must be embedded to have forward compatible implementations.
-type UnimplementedSubscriptionsServer struct {
-}
-
-func (UnimplementedSubscriptionsServer) Create(context.Context, *CreateSubscriptionRequest) (*Subscription, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedSubscriptionsServer) List(context.Context, *SubscriptionFilter) (*SubscriptionList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedSubscriptionsServer) Delete(context.Context, *DeleteSubscriptionRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedSubscriptionsServer) mustEmbedUnimplementedSubscriptionsServer() {}
-
-// UnsafeSubscriptionsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SubscriptionsServer will
-// result in compilation errors.
-type UnsafeSubscriptionsServer interface {
- mustEmbedUnimplementedSubscriptionsServer()
-}
-
-func RegisterSubscriptionsServer(s grpc.ServiceRegistrar, srv SubscriptionsServer) {
- s.RegisterService(&Subscriptions_ServiceDesc, srv)
-}
-
-func _Subscriptions_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateSubscriptionRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SubscriptionsServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Subscriptions_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SubscriptionsServer).Create(ctx, req.(*CreateSubscriptionRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Subscriptions_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SubscriptionFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SubscriptionsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Subscriptions_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SubscriptionsServer).List(ctx, req.(*SubscriptionFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Subscriptions_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteSubscriptionRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SubscriptionsServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Subscriptions_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SubscriptionsServer).Delete(ctx, req.(*DeleteSubscriptionRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Subscriptions_ServiceDesc is the grpc.ServiceDesc for Subscriptions service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Subscriptions_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.events.Subscriptions",
- HandlerType: (*SubscriptionsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Subscriptions_Create_Handler,
- },
- {
- MethodName: "List",
- Handler: _Subscriptions_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Subscriptions_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "subscriptions.platform.proto",
-}
diff --git a/proto/platform/iam/v1/account_associations.platform.event.go b/proto/platform/iam/v1/account_associations.platform.event.go
deleted file mode 100644
index c336f7e9..00000000
--- a/proto/platform/iam/v1/account_associations.platform.event.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *AccountAssociations) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return x.GetGroup(), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *AccountAssociations) CloudEventsSubject() string {
- return x.Group
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteAccountAssociationsRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return x.GetGroup(), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteAccountAssociationsRequest) CloudEventsSubject() string {
- return x.Group
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
-func (x *DeleteAccountAssociationsRequest) CloudEventsRedact() interface{} {
- return nil
-}
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.go b/proto/platform/iam/v1/account_associations.platform.pb.go
deleted file mode 100644
index 2e02c7f7..00000000
--- a/proto/platform/iam/v1/account_associations.platform.pb.go
+++ /dev/null
@@ -1,1120 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: account_associations.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type AccountAssociationsStatus_State int32
-
-const (
- AccountAssociationsStatus_UNKNOWN AccountAssociationsStatus_State = 0
- AccountAssociationsStatus_Ready AccountAssociationsStatus_State = 1
- AccountAssociationsStatus_NotReady AccountAssociationsStatus_State = 2
-)
-
-// Enum value maps for AccountAssociationsStatus_State.
-var (
- AccountAssociationsStatus_State_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "Ready",
- 2: "NotReady",
- }
- AccountAssociationsStatus_State_value = map[string]int32{
- "UNKNOWN": 0,
- "Ready": 1,
- "NotReady": 2,
- }
-)
-
-func (x AccountAssociationsStatus_State) Enum() *AccountAssociationsStatus_State {
- p := new(AccountAssociationsStatus_State)
- *p = x
- return p
-}
-
-func (x AccountAssociationsStatus_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (AccountAssociationsStatus_State) Descriptor() protoreflect.EnumDescriptor {
- return file_account_associations_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (AccountAssociationsStatus_State) Type() protoreflect.EnumType {
- return &file_account_associations_platform_proto_enumTypes[0]
-}
-
-func (x AccountAssociationsStatus_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use AccountAssociationsStatus_State.Descriptor instead.
-func (AccountAssociationsStatus_State) EnumDescriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{4, 0}
-}
-
-type AccountAssociationsCheckRequest_AccountType int32
-
-const (
- AccountAssociationsCheckRequest_UNKNOWN AccountAssociationsCheckRequest_AccountType = 0
- AccountAssociationsCheckRequest_GOOGLE AccountAssociationsCheckRequest_AccountType = 1
- AccountAssociationsCheckRequest_AMAZON AccountAssociationsCheckRequest_AccountType = 2
-)
-
-// Enum value maps for AccountAssociationsCheckRequest_AccountType.
-var (
- AccountAssociationsCheckRequest_AccountType_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "GOOGLE",
- 2: "AMAZON",
- }
- AccountAssociationsCheckRequest_AccountType_value = map[string]int32{
- "UNKNOWN": 0,
- "GOOGLE": 1,
- "AMAZON": 2,
- }
-)
-
-func (x AccountAssociationsCheckRequest_AccountType) Enum() *AccountAssociationsCheckRequest_AccountType {
- p := new(AccountAssociationsCheckRequest_AccountType)
- *p = x
- return p
-}
-
-func (x AccountAssociationsCheckRequest_AccountType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (AccountAssociationsCheckRequest_AccountType) Descriptor() protoreflect.EnumDescriptor {
- return file_account_associations_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (AccountAssociationsCheckRequest_AccountType) Type() protoreflect.EnumType {
- return &file_account_associations_platform_proto_enumTypes[1]
-}
-
-func (x AccountAssociationsCheckRequest_AccountType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use AccountAssociationsCheckRequest_AccountType.Descriptor instead.
-func (AccountAssociationsCheckRequest_AccountType) EnumDescriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{5, 0}
-}
-
-type AccountAssociations struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group is the group with which this account information is associated.
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- // amazon holds information associating an Amazon account with the group.
- Amazon *AccountAssociations_Amazon `protobuf:"bytes,2,opt,name=amazon,proto3" json:"amazon,omitempty"`
- // google holds information associating a Google project with the group.
- Google *AccountAssociations_Google `protobuf:"bytes,3,opt,name=google,proto3" json:"google,omitempty"`
- // github holds information associating a GitHub installation with the group.
- // Note: this AccountAssociation type is EXPERIMENTAL.
- Github *AccountAssociations_GitHubInstallation `protobuf:"bytes,6,opt,name=github,proto3" json:"github,omitempty"`
- Chainguard *AccountAssociations_Chainguard `protobuf:"bytes,7,opt,name=chainguard,proto3" json:"chainguard,omitempty"`
- // name of the association.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this association.
- Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
-}
-
-func (x *AccountAssociations) Reset() {
- *x = AccountAssociations{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociations) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociations) ProtoMessage() {}
-
-func (x *AccountAssociations) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociations.ProtoReflect.Descriptor instead.
-func (*AccountAssociations) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *AccountAssociations) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *AccountAssociations) GetAmazon() *AccountAssociations_Amazon {
- if x != nil {
- return x.Amazon
- }
- return nil
-}
-
-func (x *AccountAssociations) GetGoogle() *AccountAssociations_Google {
- if x != nil {
- return x.Google
- }
- return nil
-}
-
-func (x *AccountAssociations) GetGithub() *AccountAssociations_GitHubInstallation {
- if x != nil {
- return x.Github
- }
- return nil
-}
-
-func (x *AccountAssociations) GetChainguard() *AccountAssociations_Chainguard {
- if x != nil {
- return x.Chainguard
- }
- return nil
-}
-
-func (x *AccountAssociations) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *AccountAssociations) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-type AccountAssociationsList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*AccountAssociations `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *AccountAssociationsList) Reset() {
- *x = AccountAssociationsList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociationsList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociationsList) ProtoMessage() {}
-
-func (x *AccountAssociationsList) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociationsList.ProtoReflect.Descriptor instead.
-func (*AccountAssociationsList) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *AccountAssociationsList) GetItems() []*AccountAssociations {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type AccountAssociationsFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group is the exact UIDP of the group whose associations we want to list.
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- // name is the exact name of the association.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *AccountAssociationsFilter) Reset() {
- *x = AccountAssociationsFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociationsFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociationsFilter) ProtoMessage() {}
-
-func (x *AccountAssociationsFilter) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociationsFilter.ProtoReflect.Descriptor instead.
-func (*AccountAssociationsFilter) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *AccountAssociationsFilter) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *AccountAssociationsFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type DeleteAccountAssociationsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group is the exact UIDP of the group whose associations we want to delete.
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
-}
-
-func (x *DeleteAccountAssociationsRequest) Reset() {
- *x = DeleteAccountAssociationsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteAccountAssociationsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteAccountAssociationsRequest) ProtoMessage() {}
-
-func (x *DeleteAccountAssociationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteAccountAssociationsRequest.ProtoReflect.Descriptor instead.
-func (*DeleteAccountAssociationsRequest) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *DeleteAccountAssociationsRequest) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-type AccountAssociationsStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Ready AccountAssociationsStatus_State `protobuf:"varint,1,opt,name=ready,proto3,enum=chainguard.platform.iam.AccountAssociationsStatus_State" json:"ready,omitempty"`
- Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
- Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
-}
-
-func (x *AccountAssociationsStatus) Reset() {
- *x = AccountAssociationsStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociationsStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociationsStatus) ProtoMessage() {}
-
-func (x *AccountAssociationsStatus) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociationsStatus.ProtoReflect.Descriptor instead.
-func (*AccountAssociationsStatus) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *AccountAssociationsStatus) GetReady() AccountAssociationsStatus_State {
- if x != nil {
- return x.Ready
- }
- return AccountAssociationsStatus_UNKNOWN
-}
-
-func (x *AccountAssociationsStatus) GetReason() string {
- if x != nil {
- return x.Reason
- }
- return ""
-}
-
-func (x *AccountAssociationsStatus) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-type AccountAssociationsCheckRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group is the exact UIDP of the group whose associations we want to check
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- AccountType AccountAssociationsCheckRequest_AccountType `protobuf:"varint,2,opt,name=account_type,json=accountType,proto3,enum=chainguard.platform.iam.AccountAssociationsCheckRequest_AccountType" json:"account_type,omitempty"`
-}
-
-func (x *AccountAssociationsCheckRequest) Reset() {
- *x = AccountAssociationsCheckRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociationsCheckRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociationsCheckRequest) ProtoMessage() {}
-
-func (x *AccountAssociationsCheckRequest) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociationsCheckRequest.ProtoReflect.Descriptor instead.
-func (*AccountAssociationsCheckRequest) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *AccountAssociationsCheckRequest) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *AccountAssociationsCheckRequest) GetAccountType() AccountAssociationsCheckRequest_AccountType {
- if x != nil {
- return x.AccountType
- }
- return AccountAssociationsCheckRequest_UNKNOWN
-}
-
-type AccountAssociations_Amazon struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
-}
-
-func (x *AccountAssociations_Amazon) Reset() {
- *x = AccountAssociations_Amazon{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociations_Amazon) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociations_Amazon) ProtoMessage() {}
-
-func (x *AccountAssociations_Amazon) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociations_Amazon.ProtoReflect.Descriptor instead.
-func (*AccountAssociations_Amazon) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *AccountAssociations_Amazon) GetAccount() string {
- if x != nil {
- return x.Account
- }
- return ""
-}
-
-type AccountAssociations_Google struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
- ProjectNumber string `protobuf:"bytes,2,opt,name=project_number,json=projectNumber,proto3" json:"project_number,omitempty"`
-}
-
-func (x *AccountAssociations_Google) Reset() {
- *x = AccountAssociations_Google{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociations_Google) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociations_Google) ProtoMessage() {}
-
-func (x *AccountAssociations_Google) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociations_Google.ProtoReflect.Descriptor instead.
-func (*AccountAssociations_Google) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *AccountAssociations_Google) GetProjectId() string {
- if x != nil {
- return x.ProjectId
- }
- return ""
-}
-
-func (x *AccountAssociations_Google) GetProjectNumber() string {
- if x != nil {
- return x.ProjectNumber
- }
- return ""
-}
-
-type AccountAssociations_GitHubInstallation struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // GitHub hostname app is associated with. Output only.
- Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
- // GitHub App ID. Output only.
- AppId int64 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
- // GitHub App Installation ID. Takes precedence over name.
- InstallationId int64 `protobuf:"varint,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"`
- // GitHub user/org name the installation is installed on.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *AccountAssociations_GitHubInstallation) Reset() {
- *x = AccountAssociations_GitHubInstallation{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociations_GitHubInstallation) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociations_GitHubInstallation) ProtoMessage() {}
-
-func (x *AccountAssociations_GitHubInstallation) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociations_GitHubInstallation.ProtoReflect.Descriptor instead.
-func (*AccountAssociations_GitHubInstallation) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *AccountAssociations_GitHubInstallation) GetHost() string {
- if x != nil {
- return x.Host
- }
- return ""
-}
-
-func (x *AccountAssociations_GitHubInstallation) GetAppId() int64 {
- if x != nil {
- return x.AppId
- }
- return 0
-}
-
-func (x *AccountAssociations_GitHubInstallation) GetInstallationId() int64 {
- if x != nil {
- return x.InstallationId
- }
- return 0
-}
-
-func (x *AccountAssociations_GitHubInstallation) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type AccountAssociations_Chainguard struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // service_bindings map from the Chainguard service principal to the
- // UIDP of the identity that service should assume. Constraints:
- // - The identity must live directly under "group",
- // - The identity must be a service_principal,
- // - The service_principal of the identity must match the key of this map.
- // Note that the key space of this must match the ServicePrincipal enum,
- // but the enum type itself cannot be used here because of:
- // https://groups.google.com/g/protobuf/c/ikeldBe60eI
- ServiceBindings map[string]string `protobuf:"bytes,1,rep,name=service_bindings,json=serviceBindings,proto3" json:"service_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *AccountAssociations_Chainguard) Reset() {
- *x = AccountAssociations_Chainguard{}
- if protoimpl.UnsafeEnabled {
- mi := &file_account_associations_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AccountAssociations_Chainguard) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AccountAssociations_Chainguard) ProtoMessage() {}
-
-func (x *AccountAssociations_Chainguard) ProtoReflect() protoreflect.Message {
- mi := &file_account_associations_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AccountAssociations_Chainguard.ProtoReflect.Descriptor instead.
-func (*AccountAssociations_Chainguard) Descriptor() ([]byte, []int) {
- return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 3}
-}
-
-func (x *AccountAssociations_Chainguard) GetServiceBindings() map[string]string {
- if x != nil {
- return x.ServiceBindings
- }
- return nil
-}
-
-var File_account_associations_platform_proto protoreflect.FileDescriptor
-
-var file_account_associations_platform_proto_rawDesc = []byte{
- 0x0a, 0x23, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1b,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
- 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65,
- 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x06, 0x0a, 0x13,
- 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x12, 0x4b,
- 0x0a, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x52, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x57, 0x0a, 0x06, 0x67,
- 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
- 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62,
- 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x67, 0x69,
- 0x74, 0x68, 0x75, 0x62, 0x12, 0x57, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x1a, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
- 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x4e, 0x0a, 0x06, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64,
- 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62,
- 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
- 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x7c, 0x0a, 0x12, 0x47, 0x69, 0x74, 0x48, 0x75,
- 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
- 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73,
- 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xc9, 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x12, 0x77, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
- 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x65,
- 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x42, 0x0a,
- 0x14, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x22, 0x5d, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f,
- 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
- 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x22, 0x45, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63,
- 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
- 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xcc, 0x01, 0x0a, 0x19, 0x41, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
- 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2d, 0x0a, 0x05, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
- 0x09, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f,
- 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x02, 0x22, 0xdc, 0x01, 0x0a, 0x1f, 0x41, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x67, 0x0a, 0x0c, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x68,
- 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54,
- 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79,
- 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
- 0x0a, 0x0a, 0x06, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41,
- 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x10, 0x02, 0x32, 0xbc, 0x08, 0x0a, 0x18, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xec, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
- 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
- 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbd, 0x05, 0xc2, 0xf0, 0x8e, 0xfc,
- 0x0b, 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0xec, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2c,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2c, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
- 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x1a, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbe, 0x05, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
- 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x01, 0x12, 0xa0, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
- 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a,
- 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73,
- 0x74, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
- 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63,
- 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
- 0x02, 0xbf, 0x05, 0x10, 0x01, 0x12, 0xe0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x12, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x69,
- 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73,
- 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc0,
- 0x05, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xbb, 0x01, 0x0a, 0x05, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x12, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
- 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73,
- 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0xbf, 0x05, 0x42, 0x75, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x23, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_account_associations_platform_proto_rawDescOnce sync.Once
- file_account_associations_platform_proto_rawDescData = file_account_associations_platform_proto_rawDesc
-)
-
-func file_account_associations_platform_proto_rawDescGZIP() []byte {
- file_account_associations_platform_proto_rawDescOnce.Do(func() {
- file_account_associations_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_account_associations_platform_proto_rawDescData)
- })
- return file_account_associations_platform_proto_rawDescData
-}
-
-var file_account_associations_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_account_associations_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
-var file_account_associations_platform_proto_goTypes = []interface{}{
- (AccountAssociationsStatus_State)(0), // 0: chainguard.platform.iam.AccountAssociationsStatus.State
- (AccountAssociationsCheckRequest_AccountType)(0), // 1: chainguard.platform.iam.AccountAssociationsCheckRequest.AccountType
- (*AccountAssociations)(nil), // 2: chainguard.platform.iam.AccountAssociations
- (*AccountAssociationsList)(nil), // 3: chainguard.platform.iam.AccountAssociationsList
- (*AccountAssociationsFilter)(nil), // 4: chainguard.platform.iam.AccountAssociationsFilter
- (*DeleteAccountAssociationsRequest)(nil), // 5: chainguard.platform.iam.DeleteAccountAssociationsRequest
- (*AccountAssociationsStatus)(nil), // 6: chainguard.platform.iam.AccountAssociationsStatus
- (*AccountAssociationsCheckRequest)(nil), // 7: chainguard.platform.iam.AccountAssociationsCheckRequest
- (*AccountAssociations_Amazon)(nil), // 8: chainguard.platform.iam.AccountAssociations.Amazon
- (*AccountAssociations_Google)(nil), // 9: chainguard.platform.iam.AccountAssociations.Google
- (*AccountAssociations_GitHubInstallation)(nil), // 10: chainguard.platform.iam.AccountAssociations.GitHubInstallation
- (*AccountAssociations_Chainguard)(nil), // 11: chainguard.platform.iam.AccountAssociations.Chainguard
- nil, // 12: chainguard.platform.iam.AccountAssociations.Chainguard.ServiceBindingsEntry
- (*emptypb.Empty)(nil), // 13: google.protobuf.Empty
-}
-var file_account_associations_platform_proto_depIdxs = []int32{
- 8, // 0: chainguard.platform.iam.AccountAssociations.amazon:type_name -> chainguard.platform.iam.AccountAssociations.Amazon
- 9, // 1: chainguard.platform.iam.AccountAssociations.google:type_name -> chainguard.platform.iam.AccountAssociations.Google
- 10, // 2: chainguard.platform.iam.AccountAssociations.github:type_name -> chainguard.platform.iam.AccountAssociations.GitHubInstallation
- 11, // 3: chainguard.platform.iam.AccountAssociations.chainguard:type_name -> chainguard.platform.iam.AccountAssociations.Chainguard
- 2, // 4: chainguard.platform.iam.AccountAssociationsList.items:type_name -> chainguard.platform.iam.AccountAssociations
- 0, // 5: chainguard.platform.iam.AccountAssociationsStatus.ready:type_name -> chainguard.platform.iam.AccountAssociationsStatus.State
- 1, // 6: chainguard.platform.iam.AccountAssociationsCheckRequest.account_type:type_name -> chainguard.platform.iam.AccountAssociationsCheckRequest.AccountType
- 12, // 7: chainguard.platform.iam.AccountAssociations.Chainguard.service_bindings:type_name -> chainguard.platform.iam.AccountAssociations.Chainguard.ServiceBindingsEntry
- 2, // 8: chainguard.platform.iam.GroupAccountAssociations.Create:input_type -> chainguard.platform.iam.AccountAssociations
- 2, // 9: chainguard.platform.iam.GroupAccountAssociations.Update:input_type -> chainguard.platform.iam.AccountAssociations
- 4, // 10: chainguard.platform.iam.GroupAccountAssociations.List:input_type -> chainguard.platform.iam.AccountAssociationsFilter
- 5, // 11: chainguard.platform.iam.GroupAccountAssociations.Delete:input_type -> chainguard.platform.iam.DeleteAccountAssociationsRequest
- 7, // 12: chainguard.platform.iam.GroupAccountAssociations.Check:input_type -> chainguard.platform.iam.AccountAssociationsCheckRequest
- 2, // 13: chainguard.platform.iam.GroupAccountAssociations.Create:output_type -> chainguard.platform.iam.AccountAssociations
- 2, // 14: chainguard.platform.iam.GroupAccountAssociations.Update:output_type -> chainguard.platform.iam.AccountAssociations
- 3, // 15: chainguard.platform.iam.GroupAccountAssociations.List:output_type -> chainguard.platform.iam.AccountAssociationsList
- 13, // 16: chainguard.platform.iam.GroupAccountAssociations.Delete:output_type -> google.protobuf.Empty
- 6, // 17: chainguard.platform.iam.GroupAccountAssociations.Check:output_type -> chainguard.platform.iam.AccountAssociationsStatus
- 13, // [13:18] is the sub-list for method output_type
- 8, // [8:13] 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_account_associations_platform_proto_init() }
-func file_account_associations_platform_proto_init() {
- if File_account_associations_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_account_associations_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociations); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociationsList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociationsFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteAccountAssociationsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociationsStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociationsCheckRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociations_Amazon); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociations_Google); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociations_GitHubInstallation); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_account_associations_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AccountAssociations_Chainguard); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_account_associations_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 11,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_account_associations_platform_proto_goTypes,
- DependencyIndexes: file_account_associations_platform_proto_depIdxs,
- EnumInfos: file_account_associations_platform_proto_enumTypes,
- MessageInfos: file_account_associations_platform_proto_msgTypes,
- }.Build()
- File_account_associations_platform_proto = out.File
- file_account_associations_platform_proto_rawDesc = nil
- file_account_associations_platform_proto_goTypes = nil
- file_account_associations_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.gw.go b/proto/platform/iam/v1/account_associations.platform.pb.gw.go
deleted file mode 100644
index 5f1a7325..00000000
--- a/proto/platform/iam/v1/account_associations.platform.pb.gw.go
+++ /dev/null
@@ -1,618 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: account_associations.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_GroupAccountAssociations_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociations
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupAccountAssociations_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociations
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_GroupAccountAssociations_Update_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociations
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupAccountAssociations_Update_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociations
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_GroupAccountAssociations_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_GroupAccountAssociations_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociationsFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupAccountAssociations_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupAccountAssociations_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociationsFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupAccountAssociations_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_GroupAccountAssociations_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteAccountAssociationsRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupAccountAssociations_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteAccountAssociationsRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_GroupAccountAssociations_Check_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociationsCheckRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := client.Check(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupAccountAssociations_Check_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AccountAssociationsCheckRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := server.Check(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterGroupAccountAssociationsHandlerServer registers the http handlers for service GroupAccountAssociations to "mux".
-// UnaryRPC :call GroupAccountAssociationsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupAccountAssociationsHandlerFromEndpoint instead.
-func RegisterGroupAccountAssociationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupAccountAssociationsServer) error {
-
- mux.Handle("POST", pattern_GroupAccountAssociations_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Create", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupAccountAssociations_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_GroupAccountAssociations_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Update", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupAccountAssociations_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_GroupAccountAssociations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/List", runtime.WithHTTPPathPattern("/iam/v1/account_associations"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupAccountAssociations_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_GroupAccountAssociations_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Delete", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupAccountAssociations_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_GroupAccountAssociations_Check_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Check", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}:check"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupAccountAssociations_Check_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Check_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterGroupAccountAssociationsHandlerFromEndpoint is same as RegisterGroupAccountAssociationsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterGroupAccountAssociationsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterGroupAccountAssociationsHandler(ctx, mux, conn)
-}
-
-// RegisterGroupAccountAssociationsHandler registers the http handlers for service GroupAccountAssociations to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterGroupAccountAssociationsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterGroupAccountAssociationsHandlerClient(ctx, mux, NewGroupAccountAssociationsClient(conn))
-}
-
-// RegisterGroupAccountAssociationsHandlerClient registers the http handlers for service GroupAccountAssociations
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupAccountAssociationsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupAccountAssociationsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "GroupAccountAssociationsClient" to call the correct interceptors.
-func RegisterGroupAccountAssociationsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupAccountAssociationsClient) error {
-
- mux.Handle("POST", pattern_GroupAccountAssociations_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Create", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupAccountAssociations_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_GroupAccountAssociations_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Update", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupAccountAssociations_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_GroupAccountAssociations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/List", runtime.WithHTTPPathPattern("/iam/v1/account_associations"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupAccountAssociations_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_GroupAccountAssociations_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Delete", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupAccountAssociations_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_GroupAccountAssociations_Check_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Check", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}:check"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupAccountAssociations_Check_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupAccountAssociations_Check_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_GroupAccountAssociations_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
-
- pattern_GroupAccountAssociations_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
-
- pattern_GroupAccountAssociations_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "account_associations"}, ""))
-
- pattern_GroupAccountAssociations_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
-
- pattern_GroupAccountAssociations_Check_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, "check"))
-)
-
-var (
- forward_GroupAccountAssociations_Create_0 = runtime.ForwardResponseMessage
-
- forward_GroupAccountAssociations_Update_0 = runtime.ForwardResponseMessage
-
- forward_GroupAccountAssociations_List_0 = runtime.ForwardResponseMessage
-
- forward_GroupAccountAssociations_Delete_0 = runtime.ForwardResponseMessage
-
- forward_GroupAccountAssociations_Check_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/account_associations.platform.proto b/proto/platform/iam/v1/account_associations.platform.proto
deleted file mode 100644
index b6ca2756..00000000
--- a/proto/platform/iam/v1/account_associations.platform.proto
+++ /dev/null
@@ -1,192 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMAccountAssociationsProto";
-
-package chainguard.platform.iam;
-
-import "google/protobuf/empty.proto";
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-
-service GroupAccountAssociations {
- rpc Create(AccountAssociations) returns (AccountAssociations) {
- option (google.api.http) = {
- post: "/iam/v1/account_associations/{group=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.account_associations.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(AccountAssociations) returns (AccountAssociations) {
- option (google.api.http) = {
- put: "/iam/v1/account_associations/{group=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.account_associations.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(AccountAssociationsFilter) returns (AccountAssociationsList) {
- option (google.api.http) = {
- get: "/iam/v1/account_associations"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteAccountAssociationsRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/account_associations/{group=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.account_associations.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Check(AccountAssociationsCheckRequest) returns (AccountAssociationsStatus) {
- option (google.api.http) = {
- post: "/iam/v1/account_associations/{group=**}:check"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST]
- }
- };
- }
-}
-
-message AccountAssociations {
- // group is the group with which this account information is associated.
- string group = 1 [(chainguard.annotations.iam_scope) = true];
-
- // amazon holds information associating an Amazon account with the group.
- Amazon amazon = 2;
-
- // google holds information associating a Google project with the group.
- Google google = 3;
-
- // github holds information associating a GitHub installation with the group.
- // Note: this AccountAssociation type is EXPERIMENTAL.
- GitHubInstallation github = 6;
-
- Chainguard chainguard = 7;
-
- // name of the association.
- string name = 4;
-
- // a short description of this association.
- string description = 5;
-
- // TODO(#617): Azure
-
- message Amazon {
- string account = 1;
- }
-
- message Google {
- string project_id = 1;
- string project_number = 2;
- }
-
- message GitHubInstallation {
- // GitHub hostname app is associated with. Output only.
- string host = 1;
-
- // GitHub App ID. Output only.
- int64 app_id = 2;
-
- // GitHub App Installation ID. Takes precedence over name.
- int64 installation_id = 3;
-
- // GitHub user/org name the installation is installed on.
- string name = 4;
- }
-
- message Chainguard {
- // service_bindings map from the Chainguard service principal to the
- // UIDP of the identity that service should assume. Constraints:
- // - The identity must live directly under "group",
- // - The identity must be a service_principal,
- // - The service_principal of the identity must match the key of this map.
- // Note that the key space of this must match the ServicePrincipal enum,
- // but the enum type itself cannot be used here because of:
- // https://groups.google.com/g/protobuf/c/ikeldBe60eI
- map service_bindings = 1;
- }
-
- // next id: 8
-}
-
-message AccountAssociationsList {
- repeated AccountAssociations items = 1;
-}
-
-message AccountAssociationsFilter {
- // group is the exact UIDP of the group whose associations we want to list.
- string group = 1;
- // name is the exact name of the association.
- string name = 2;
-}
-
-message DeleteAccountAssociationsRequest {
- // group is the exact UIDP of the group whose associations we want to delete.
- string group = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message AccountAssociationsStatus {
- enum State {
- UNKNOWN = 0;
- Ready = 1;
- NotReady = 2;
- }
-
- State ready = 1;
- string reason = 2;
- string message = 3;
-}
-
-message AccountAssociationsCheckRequest {
- // group is the exact UIDP of the group whose associations we want to check
- string group = 1 [(chainguard.annotations.iam_scope) = true];
-
- AccountType account_type = 2;
-
- enum AccountType {
- UNKNOWN = 0;
- GOOGLE = 1;
- AMAZON = 2;
- }
-}
diff --git a/proto/platform/iam/v1/account_associations.platform_grpc.pb.go b/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
deleted file mode 100644
index 7c5482e3..00000000
--- a/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: account_associations.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- GroupAccountAssociations_Create_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Create"
- GroupAccountAssociations_Update_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Update"
- GroupAccountAssociations_List_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/List"
- GroupAccountAssociations_Delete_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Delete"
- GroupAccountAssociations_Check_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Check"
-)
-
-// GroupAccountAssociationsClient is the client API for GroupAccountAssociations service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type GroupAccountAssociationsClient interface {
- Create(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error)
- Update(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error)
- List(ctx context.Context, in *AccountAssociationsFilter, opts ...grpc.CallOption) (*AccountAssociationsList, error)
- Delete(ctx context.Context, in *DeleteAccountAssociationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- Check(ctx context.Context, in *AccountAssociationsCheckRequest, opts ...grpc.CallOption) (*AccountAssociationsStatus, error)
-}
-
-type groupAccountAssociationsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewGroupAccountAssociationsClient(cc grpc.ClientConnInterface) GroupAccountAssociationsClient {
- return &groupAccountAssociationsClient{cc}
-}
-
-func (c *groupAccountAssociationsClient) Create(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error) {
- out := new(AccountAssociations)
- err := c.cc.Invoke(ctx, GroupAccountAssociations_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupAccountAssociationsClient) Update(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error) {
- out := new(AccountAssociations)
- err := c.cc.Invoke(ctx, GroupAccountAssociations_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupAccountAssociationsClient) List(ctx context.Context, in *AccountAssociationsFilter, opts ...grpc.CallOption) (*AccountAssociationsList, error) {
- out := new(AccountAssociationsList)
- err := c.cc.Invoke(ctx, GroupAccountAssociations_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupAccountAssociationsClient) Delete(ctx context.Context, in *DeleteAccountAssociationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, GroupAccountAssociations_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupAccountAssociationsClient) Check(ctx context.Context, in *AccountAssociationsCheckRequest, opts ...grpc.CallOption) (*AccountAssociationsStatus, error) {
- out := new(AccountAssociationsStatus)
- err := c.cc.Invoke(ctx, GroupAccountAssociations_Check_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// GroupAccountAssociationsServer is the server API for GroupAccountAssociations service.
-// All implementations must embed UnimplementedGroupAccountAssociationsServer
-// for forward compatibility
-type GroupAccountAssociationsServer interface {
- Create(context.Context, *AccountAssociations) (*AccountAssociations, error)
- Update(context.Context, *AccountAssociations) (*AccountAssociations, error)
- List(context.Context, *AccountAssociationsFilter) (*AccountAssociationsList, error)
- Delete(context.Context, *DeleteAccountAssociationsRequest) (*emptypb.Empty, error)
- Check(context.Context, *AccountAssociationsCheckRequest) (*AccountAssociationsStatus, error)
- mustEmbedUnimplementedGroupAccountAssociationsServer()
-}
-
-// UnimplementedGroupAccountAssociationsServer must be embedded to have forward compatible implementations.
-type UnimplementedGroupAccountAssociationsServer struct {
-}
-
-func (UnimplementedGroupAccountAssociationsServer) Create(context.Context, *AccountAssociations) (*AccountAssociations, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedGroupAccountAssociationsServer) Update(context.Context, *AccountAssociations) (*AccountAssociations, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedGroupAccountAssociationsServer) List(context.Context, *AccountAssociationsFilter) (*AccountAssociationsList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedGroupAccountAssociationsServer) Delete(context.Context, *DeleteAccountAssociationsRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedGroupAccountAssociationsServer) Check(context.Context, *AccountAssociationsCheckRequest) (*AccountAssociationsStatus, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Check not implemented")
-}
-func (UnimplementedGroupAccountAssociationsServer) mustEmbedUnimplementedGroupAccountAssociationsServer() {
-}
-
-// UnsafeGroupAccountAssociationsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to GroupAccountAssociationsServer will
-// result in compilation errors.
-type UnsafeGroupAccountAssociationsServer interface {
- mustEmbedUnimplementedGroupAccountAssociationsServer()
-}
-
-func RegisterGroupAccountAssociationsServer(s grpc.ServiceRegistrar, srv GroupAccountAssociationsServer) {
- s.RegisterService(&GroupAccountAssociations_ServiceDesc, srv)
-}
-
-func _GroupAccountAssociations_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AccountAssociations)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupAccountAssociationsServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupAccountAssociations_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupAccountAssociationsServer).Create(ctx, req.(*AccountAssociations))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupAccountAssociations_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AccountAssociations)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupAccountAssociationsServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupAccountAssociations_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupAccountAssociationsServer).Update(ctx, req.(*AccountAssociations))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupAccountAssociations_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AccountAssociationsFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupAccountAssociationsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupAccountAssociations_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupAccountAssociationsServer).List(ctx, req.(*AccountAssociationsFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupAccountAssociations_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteAccountAssociationsRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupAccountAssociationsServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupAccountAssociations_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupAccountAssociationsServer).Delete(ctx, req.(*DeleteAccountAssociationsRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupAccountAssociations_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AccountAssociationsCheckRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupAccountAssociationsServer).Check(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupAccountAssociations_Check_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupAccountAssociationsServer).Check(ctx, req.(*AccountAssociationsCheckRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// GroupAccountAssociations_ServiceDesc is the grpc.ServiceDesc for GroupAccountAssociations service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var GroupAccountAssociations_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.GroupAccountAssociations",
- HandlerType: (*GroupAccountAssociationsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _GroupAccountAssociations_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _GroupAccountAssociations_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _GroupAccountAssociations_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _GroupAccountAssociations_Delete_Handler,
- },
- {
- MethodName: "Check",
- Handler: _GroupAccountAssociations_Check_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "account_associations.platform.proto",
-}
diff --git a/proto/platform/iam/v1/clients.go b/proto/platform/iam/v1/clients.go
deleted file mode 100644
index 89e0fbd2..00000000
--- a/proto/platform/iam/v1/clients.go
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
- events "chainguard.dev/sdk/proto/platform/events/v1"
-)
-
-type Clients interface {
- Groups() GroupsClient
- GroupInvites() GroupInvitesClient
- Roles() RolesClient
- RoleBindings() RoleBindingsClient
-
- Identities() IdentitiesClient
- DeprecatedIdentities() events.IdentitiesClient
- IdentityProviders() IdentityProvidersClient
-
- AccountAssociations() GroupAccountAssociationsClient
-
- Subscriptions() events.SubscriptionsClient
-
- Close() error
-}
-
-func NewClients(ctx context.Context, iamURL string, token string) (Clients, error) {
- iamURI, err := url.Parse(iamURL)
- if err != nil {
- return nil, fmt.Errorf("failed to parse iam service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*iamURI)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("iam.NewClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- group: NewGroupsClient(conn),
- groupInvite: NewGroupInvitesClient(conn),
- role: NewRolesClient(conn),
- roleBinding: NewRoleBindingsClient(conn),
- identities: NewIdentitiesClient(conn),
- deprecatedIdentities: events.NewIdentitiesClient(conn),
- identityProviders: NewIdentityProvidersClient(conn),
-
- accountAssociations: NewGroupAccountAssociationsClient(conn),
-
- subscription: events.NewSubscriptionsClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- group: NewGroupsClient(conn),
- groupInvite: NewGroupInvitesClient(conn),
- role: NewRolesClient(conn),
- roleBinding: NewRoleBindingsClient(conn),
- identities: NewIdentitiesClient(conn),
- deprecatedIdentities: events.NewIdentitiesClient(conn),
- identityProviders: NewIdentityProvidersClient(conn),
-
- accountAssociations: NewGroupAccountAssociationsClient(conn),
-
- subscription: events.NewSubscriptionsClient(conn),
-
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- group GroupsClient
- groupInvite GroupInvitesClient
- role RolesClient
- roleBinding RoleBindingsClient
- identities IdentitiesClient
- deprecatedIdentities events.IdentitiesClient
- identityProviders IdentityProvidersClient
-
- accountAssociations GroupAccountAssociationsClient
-
- subscription events.SubscriptionsClient
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) Groups() GroupsClient {
- return c.group
-}
-
-func (c *clients) GroupInvites() GroupInvitesClient {
- return c.groupInvite
-}
-
-func (c *clients) Roles() RolesClient {
- return c.role
-}
-
-func (c *clients) RoleBindings() RoleBindingsClient {
- return c.roleBinding
-}
-
-func (c *clients) Identities() IdentitiesClient {
- return c.identities
-}
-
-func (c *clients) DeprecatedIdentities() events.IdentitiesClient {
- return c.deprecatedIdentities
-}
-
-func (c *clients) IdentityProviders() IdentityProvidersClient {
- return c.identityProviders
-}
-
-func (c *clients) AccountAssociations() GroupAccountAssociationsClient {
- return c.accountAssociations
-}
-
-func (c *clients) Subscriptions() events.SubscriptionsClient {
- return c.subscription
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/iam/v1/doc.go b/proto/platform/iam/v1/doc.go
deleted file mode 100644
index 8fccce6d..00000000
--- a/proto/platform/iam/v1/doc.go
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Generate the proto definitions
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. group.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. group_invites.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. role.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. role_binding.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. account_associations.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity_providers.platform.proto
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing IAM interactions for the Console.
-package v1
diff --git a/proto/platform/iam/v1/group.platform.event.go b/proto/platform/iam/v1/group.platform.event.go
deleted file mode 100644
index fba1b291..00000000
--- a/proto/platform/iam/v1/group.platform.event.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import "chainguard.dev/sdk/uidp"
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Group) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return x.GetId(), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Group) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteGroupRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteGroupRequest) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/group.platform.pb.go b/proto/platform/iam/v1/group.platform.pb.go
deleted file mode 100644
index 9860a173..00000000
--- a/proto/platform/iam/v1/group.platform.pb.go
+++ /dev/null
@@ -1,570 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: group.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Group struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The group UIDP under which this group resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human readable name of group.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human readable of group.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // resource_limits indicate the maximum number of resources allowed for this group by type.
- ResourceLimits map[string]int32 `protobuf:"bytes,4,rep,name=resource_limits,json=resourceLimits,proto3" json:"resource_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
- // verified means we've verified the owners of this organization. Restrictions include:
- // - Only organizations (root groups) can be verified
- // - Property can only be set by manually by Chainguardians
- // - If verified is set, the organizations name field must be globally unique
- // - If verified is set the organizations name should be a domain name
- Verified bool `protobuf:"varint,5,opt,name=verified,proto3" json:"verified,omitempty"`
-}
-
-func (x *Group) Reset() {
- *x = Group{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Group) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Group) ProtoMessage() {}
-
-func (x *Group) ProtoReflect() protoreflect.Message {
- mi := &file_group_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Group.ProtoReflect.Descriptor instead.
-func (*Group) Descriptor() ([]byte, []int) {
- return file_group_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Group) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Group) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Group) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Group) GetResourceLimits() map[string]int32 {
- if x != nil {
- return x.ResourceLimits
- }
- return nil
-}
-
-func (x *Group) GetVerified() bool {
- if x != nil {
- return x.Verified
- }
- return false
-}
-
-type GroupList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Group `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *GroupList) Reset() {
- *x = GroupList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupList) ProtoMessage() {}
-
-func (x *GroupList) ProtoReflect() protoreflect.Message {
- mi := &file_group_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupList.ProtoReflect.Descriptor instead.
-func (*GroupList) Descriptor() ([]byte, []int) {
- return file_group_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GroupList) GetItems() []*Group {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type GroupFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // name is the exact name of the record.
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *GroupFilter) Reset() {
- *x = GroupFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupFilter) ProtoMessage() {}
-
-func (x *GroupFilter) ProtoReflect() protoreflect.Message {
- mi := &file_group_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupFilter.ProtoReflect.Descriptor instead.
-func (*GroupFilter) Descriptor() ([]byte, []int) {
- return file_group_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *GroupFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *GroupFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *GroupFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type CreateGroupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent, The Group UIDP path under which the new Group resides.
- // This is effectively the iam_scope for Create requests, but because
- // we also allow users to create new "root" groups, we check the scoping
- // manually. Parent is allowed to be a prefix of a UIDP of a Group within
- // scope, or the name of a Group in scope.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // Group to create.
- Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
-}
-
-func (x *CreateGroupRequest) Reset() {
- *x = CreateGroupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateGroupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateGroupRequest) ProtoMessage() {}
-
-func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_group_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead.
-func (*CreateGroupRequest) Descriptor() ([]byte, []int) {
- return file_group_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CreateGroupRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateGroupRequest) GetGroup() *Group {
- if x != nil {
- return x.Group
- }
- return nil
-}
-
-type DeleteGroupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteGroupRequest) Reset() {
- *x = DeleteGroupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteGroupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteGroupRequest) ProtoMessage() {}
-
-func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_group_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead.
-func (*DeleteGroupRequest) Descriptor() ([]byte, []int) {
- return file_group_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *DeleteGroupRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-var File_group_platform_proto protoreflect.FileDescriptor
-
-var file_group_platform_proto_rawDesc = []byte{
- 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65,
- 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31,
- 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
- 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0f,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72,
- 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72,
- 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x12, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2c,
- 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xab, 0x05, 0x0a,
- 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
- 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1a,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
- 0x12, 0x05, 0x0a, 0x01, 0x65, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12,
- 0xae, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x1a, 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x05, 0x12, 0x03, 0x0a, 0x01, 0x66, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
- 0x12, 0x75, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x22,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
- 0x12, 0x05, 0x0a, 0x01, 0x67, 0x10, 0x01, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a,
- 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f,
- 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x05, 0x12, 0x03, 0x0a,
- 0x01, 0x68, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x67, 0x0a, 0x22, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31,
- 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_group_platform_proto_rawDescOnce sync.Once
- file_group_platform_proto_rawDescData = file_group_platform_proto_rawDesc
-)
-
-func file_group_platform_proto_rawDescGZIP() []byte {
- file_group_platform_proto_rawDescOnce.Do(func() {
- file_group_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_platform_proto_rawDescData)
- })
- return file_group_platform_proto_rawDescData
-}
-
-var file_group_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_group_platform_proto_goTypes = []interface{}{
- (*Group)(nil), // 0: chainguard.platform.iam.Group
- (*GroupList)(nil), // 1: chainguard.platform.iam.GroupList
- (*GroupFilter)(nil), // 2: chainguard.platform.iam.GroupFilter
- (*CreateGroupRequest)(nil), // 3: chainguard.platform.iam.CreateGroupRequest
- (*DeleteGroupRequest)(nil), // 4: chainguard.platform.iam.DeleteGroupRequest
- nil, // 5: chainguard.platform.iam.Group.ResourceLimitsEntry
- (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
-}
-var file_group_platform_proto_depIdxs = []int32{
- 5, // 0: chainguard.platform.iam.Group.resource_limits:type_name -> chainguard.platform.iam.Group.ResourceLimitsEntry
- 0, // 1: chainguard.platform.iam.GroupList.items:type_name -> chainguard.platform.iam.Group
- 6, // 2: chainguard.platform.iam.GroupFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 3: chainguard.platform.iam.CreateGroupRequest.group:type_name -> chainguard.platform.iam.Group
- 3, // 4: chainguard.platform.iam.Groups.Create:input_type -> chainguard.platform.iam.CreateGroupRequest
- 0, // 5: chainguard.platform.iam.Groups.Update:input_type -> chainguard.platform.iam.Group
- 2, // 6: chainguard.platform.iam.Groups.List:input_type -> chainguard.platform.iam.GroupFilter
- 4, // 7: chainguard.platform.iam.Groups.Delete:input_type -> chainguard.platform.iam.DeleteGroupRequest
- 0, // 8: chainguard.platform.iam.Groups.Create:output_type -> chainguard.platform.iam.Group
- 0, // 9: chainguard.platform.iam.Groups.Update:output_type -> chainguard.platform.iam.Group
- 1, // 10: chainguard.platform.iam.Groups.List:output_type -> chainguard.platform.iam.GroupList
- 7, // 11: chainguard.platform.iam.Groups.Delete:output_type -> google.protobuf.Empty
- 8, // [8:12] is the sub-list for method output_type
- 4, // [4:8] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_group_platform_proto_init() }
-func file_group_platform_proto_init() {
- if File_group_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_group_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Group); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateGroupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteGroupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_group_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_group_platform_proto_goTypes,
- DependencyIndexes: file_group_platform_proto_depIdxs,
- MessageInfos: file_group_platform_proto_msgTypes,
- }.Build()
- File_group_platform_proto = out.File
- file_group_platform_proto_rawDesc = nil
- file_group_platform_proto_goTypes = nil
- file_group_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/group.platform.pb.gw.go b/proto/platform/iam/v1/group.platform.pb.gw.go
deleted file mode 100644
index 5e56d640..00000000
--- a/proto/platform/iam/v1/group.platform.pb.gw.go
+++ /dev/null
@@ -1,501 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: group.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Groups_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateGroupRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Group); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
- }
-
- protoReq.Parent, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Groups_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateGroupRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Group); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
- }
-
- protoReq.Parent, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Groups_Update_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Group
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Groups_Update_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Group
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Groups_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Groups_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Groups_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Groups_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Groups_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Groups_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteGroupRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Groups_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteGroupRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterGroupsHandlerServer registers the http handlers for service Groups to "mux".
-// UnaryRPC :call GroupsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupsHandlerFromEndpoint instead.
-func RegisterGroupsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupsServer) error {
-
- mux.Handle("POST", pattern_Groups_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Create", runtime.WithHTTPPathPattern("/iam/v1/groups/{parent=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Groups_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Groups_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Update", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Groups_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Groups_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/List", runtime.WithHTTPPathPattern("/iam/v1/groups"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Groups_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Groups_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Delete", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Groups_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterGroupsHandlerFromEndpoint is same as RegisterGroupsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterGroupsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterGroupsHandler(ctx, mux, conn)
-}
-
-// RegisterGroupsHandler registers the http handlers for service Groups to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterGroupsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterGroupsHandlerClient(ctx, mux, NewGroupsClient(conn))
-}
-
-// RegisterGroupsHandlerClient registers the http handlers for service Groups
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "GroupsClient" to call the correct interceptors.
-func RegisterGroupsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupsClient) error {
-
- mux.Handle("POST", pattern_Groups_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Create", runtime.WithHTTPPathPattern("/iam/v1/groups/{parent=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Groups_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Groups_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Update", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Groups_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Groups_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/List", runtime.WithHTTPPathPattern("/iam/v1/groups"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Groups_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Groups_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Delete", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Groups_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Groups_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Groups_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "parent"}, ""))
-
- pattern_Groups_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "id"}, ""))
-
- pattern_Groups_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "groups"}, ""))
-
- pattern_Groups_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "id"}, ""))
-)
-
-var (
- forward_Groups_Create_0 = runtime.ForwardResponseMessage
-
- forward_Groups_Update_0 = runtime.ForwardResponseMessage
-
- forward_Groups_List_0 = runtime.ForwardResponseMessage
-
- forward_Groups_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/group.platform.proto b/proto/platform/iam/v1/group.platform.proto
deleted file mode 100644
index d354c74f..00000000
--- a/proto/platform/iam/v1/group.platform.proto
+++ /dev/null
@@ -1,127 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMGroupProto";
-
-package chainguard.platform.iam;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Groups {
- rpc Create(CreateGroupRequest) returns (Group) {
- option (google.api.http) = {
- post: "/iam/v1/groups/{parent=**}"
- body: "group"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUPS_CREATE]
- // We treat group creation as unscoped in order
- // to allow users to create new root groups.
- unscoped: true
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.group.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(Group) returns (Group) {
- option (google.api.http) = {
- put: "/iam/v1/groups/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUPS_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.group.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(GroupFilter) returns (GroupList) {
- option (google.api.http) = {
- get: "/iam/v1/groups"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUPS_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteGroupRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/groups/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUPS_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.group.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message Group {
- // id, The group UIDP under which this group resides.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
- // name, human readable name of group.
- string name = 2;
- // description, human readable of group.
- string description = 3;
- // resource_limits indicate the maximum number of resources allowed for this group by type.
- map resource_limits = 4;
- // verified means we've verified the owners of this organization. Restrictions include:
- // - Only organizations (root groups) can be verified
- // - Property can only be set by manually by Chainguardians
- // - If verified is set, the organizations name field must be globally unique
- // - If verified is set the organizations name should be a domain name
- bool verified = 5;
-}
-
-message GroupList {
- repeated Group items = 1;
-}
-
-message GroupFilter {
- // id is the exact UID of the record.
- string id = 1;
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 2;
- // name is the exact name of the record.
- string name = 3;
-}
-
-message CreateGroupRequest {
- // parent, The Group UIDP path under which the new Group resides.
- // This is effectively the iam_scope for Create requests, but because
- // we also allow users to create new "root" groups, we check the scoping
- // manually. Parent is allowed to be a prefix of a UIDP of a Group within
- // scope, or the name of a Group in scope.
- string parent = 1;
- // Group to create.
- Group group = 2;
-}
-
-message DeleteGroupRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
diff --git a/proto/platform/iam/v1/group.platform_grpc.pb.go b/proto/platform/iam/v1/group.platform_grpc.pb.go
deleted file mode 100644
index a86b2aad..00000000
--- a/proto/platform/iam/v1/group.platform_grpc.pb.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: group.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Groups_Create_FullMethodName = "/chainguard.platform.iam.Groups/Create"
- Groups_Update_FullMethodName = "/chainguard.platform.iam.Groups/Update"
- Groups_List_FullMethodName = "/chainguard.platform.iam.Groups/List"
- Groups_Delete_FullMethodName = "/chainguard.platform.iam.Groups/Delete"
-)
-
-// GroupsClient is the client API for Groups service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type GroupsClient interface {
- Create(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error)
- Update(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Group, error)
- List(ctx context.Context, in *GroupFilter, opts ...grpc.CallOption) (*GroupList, error)
- Delete(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type groupsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewGroupsClient(cc grpc.ClientConnInterface) GroupsClient {
- return &groupsClient{cc}
-}
-
-func (c *groupsClient) Create(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error) {
- out := new(Group)
- err := c.cc.Invoke(ctx, Groups_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupsClient) Update(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Group, error) {
- out := new(Group)
- err := c.cc.Invoke(ctx, Groups_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupsClient) List(ctx context.Context, in *GroupFilter, opts ...grpc.CallOption) (*GroupList, error) {
- out := new(GroupList)
- err := c.cc.Invoke(ctx, Groups_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupsClient) Delete(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Groups_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// GroupsServer is the server API for Groups service.
-// All implementations must embed UnimplementedGroupsServer
-// for forward compatibility
-type GroupsServer interface {
- Create(context.Context, *CreateGroupRequest) (*Group, error)
- Update(context.Context, *Group) (*Group, error)
- List(context.Context, *GroupFilter) (*GroupList, error)
- Delete(context.Context, *DeleteGroupRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedGroupsServer()
-}
-
-// UnimplementedGroupsServer must be embedded to have forward compatible implementations.
-type UnimplementedGroupsServer struct {
-}
-
-func (UnimplementedGroupsServer) Create(context.Context, *CreateGroupRequest) (*Group, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedGroupsServer) Update(context.Context, *Group) (*Group, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedGroupsServer) List(context.Context, *GroupFilter) (*GroupList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedGroupsServer) Delete(context.Context, *DeleteGroupRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedGroupsServer) mustEmbedUnimplementedGroupsServer() {}
-
-// UnsafeGroupsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to GroupsServer will
-// result in compilation errors.
-type UnsafeGroupsServer interface {
- mustEmbedUnimplementedGroupsServer()
-}
-
-func RegisterGroupsServer(s grpc.ServiceRegistrar, srv GroupsServer) {
- s.RegisterService(&Groups_ServiceDesc, srv)
-}
-
-func _Groups_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateGroupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupsServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Groups_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupsServer).Create(ctx, req.(*CreateGroupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Groups_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Group)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupsServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Groups_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupsServer).Update(ctx, req.(*Group))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Groups_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GroupFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Groups_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupsServer).List(ctx, req.(*GroupFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Groups_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteGroupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupsServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Groups_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupsServer).Delete(ctx, req.(*DeleteGroupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Groups_ServiceDesc is the grpc.ServiceDesc for Groups service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Groups_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.Groups",
- HandlerType: (*GroupsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Groups_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _Groups_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _Groups_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Groups_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "group.platform.proto",
-}
diff --git a/proto/platform/iam/v1/group_invites.platform.event.go b/proto/platform/iam/v1/group_invites.platform.event.go
deleted file mode 100644
index 7526996c..00000000
--- a/proto/platform/iam/v1/group_invites.platform.event.go
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *GroupInvite) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *GroupInvite) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.CloudEventsRedact.
-func (x *GroupInvite) CloudEventsRedact() interface{} {
- return &GroupInvite{
- Id: x.Id,
- Expiration: x.Expiration,
- }
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteGroupInviteRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteGroupInviteRequest) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
deleted file mode 100644
index 87a0b464..00000000
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ /dev/null
@@ -1,981 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: group_invites.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- durationpb "google.golang.org/protobuf/types/known/durationpb"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type RegistrationRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Kind:
- //
- // *RegistrationRequest_Human_
- // *RegistrationRequest_Cluster_
- Kind isRegistrationRequest_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *RegistrationRequest) Reset() {
- *x = RegistrationRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RegistrationRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RegistrationRequest) ProtoMessage() {}
-
-func (x *RegistrationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RegistrationRequest.ProtoReflect.Descriptor instead.
-func (*RegistrationRequest) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (m *RegistrationRequest) GetKind() isRegistrationRequest_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *RegistrationRequest) GetHuman() *RegistrationRequest_Human {
- if x, ok := x.GetKind().(*RegistrationRequest_Human_); ok {
- return x.Human
- }
- return nil
-}
-
-func (x *RegistrationRequest) GetCluster() *RegistrationRequest_Cluster {
- if x, ok := x.GetKind().(*RegistrationRequest_Cluster_); ok {
- return x.Cluster
- }
- return nil
-}
-
-type isRegistrationRequest_Kind interface {
- isRegistrationRequest_Kind()
-}
-
-type RegistrationRequest_Human_ struct {
- Human *RegistrationRequest_Human `protobuf:"bytes,1,opt,name=human,proto3,oneof"`
-}
-
-type RegistrationRequest_Cluster_ struct {
- Cluster *RegistrationRequest_Cluster `protobuf:"bytes,2,opt,name=cluster,proto3,oneof"`
-}
-
-func (*RegistrationRequest_Human_) isRegistrationRequest_Kind() {}
-
-func (*RegistrationRequest_Cluster_) isRegistrationRequest_Kind() {}
-
-type GroupInvite struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The group UIDP under which this invite resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // expiration, timestamp this invite becomes no longer valid.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
- // key_id is used to identify the verification key for this code.
- KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
- // role is the role the invited identity will be role-bound to the group with.
- Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
- // code is the json-encoded authentication code.
- Code string `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"`
-}
-
-func (x *GroupInvite) Reset() {
- *x = GroupInvite{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupInvite) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupInvite) ProtoMessage() {}
-
-func (x *GroupInvite) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupInvite.ProtoReflect.Descriptor instead.
-func (*GroupInvite) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GroupInvite) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *GroupInvite) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
-func (x *GroupInvite) GetKeyId() string {
- if x != nil {
- return x.KeyId
- }
- return ""
-}
-
-func (x *GroupInvite) GetRole() *Role {
- if x != nil {
- return x.Role
- }
- return nil
-}
-
-func (x *GroupInvite) GetCode() string {
- if x != nil {
- return x.Code
- }
- return ""
-}
-
-type StoredGroupInvite struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The group UIDP under which this invite resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // expiration, timestamp this invite becomes no longer valid.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
- // key_id is used to identify the verification key for this code.
- KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
- // role is the role the invited identity will be role-bound to the group with.
- Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
- // email is the email address that is allowed to accept this invite code. If blank,
- // anyone with the invite code an accept.
- Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
- // created_at is the timestamp for when the invite was created.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // single_use indicates whether or not the invite will be deleted after a user joins the group.
- SingleUse bool `protobuf:"varint,7,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"`
-}
-
-func (x *StoredGroupInvite) Reset() {
- *x = StoredGroupInvite{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *StoredGroupInvite) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StoredGroupInvite) ProtoMessage() {}
-
-func (x *StoredGroupInvite) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use StoredGroupInvite.ProtoReflect.Descriptor instead.
-func (*StoredGroupInvite) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *StoredGroupInvite) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *StoredGroupInvite) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
-func (x *StoredGroupInvite) GetKeyId() string {
- if x != nil {
- return x.KeyId
- }
- return ""
-}
-
-func (x *StoredGroupInvite) GetRole() *Role {
- if x != nil {
- return x.Role
- }
- return nil
-}
-
-func (x *StoredGroupInvite) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-func (x *StoredGroupInvite) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *StoredGroupInvite) GetSingleUse() bool {
- if x != nil {
- return x.SingleUse
- }
- return false
-}
-
-type GroupInviteList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*StoredGroupInvite `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *GroupInviteList) Reset() {
- *x = GroupInviteList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupInviteList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupInviteList) ProtoMessage() {}
-
-func (x *GroupInviteList) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupInviteList.ProtoReflect.Descriptor instead.
-func (*GroupInviteList) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *GroupInviteList) GetItems() []*StoredGroupInvite {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type GroupInviteRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group, The Group UIDP path under which the new group Invite targets.
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- // expiration, timestamp this invite becomes no longer valid.
- Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
- // role is the Role UIDP the invited identity will be role-bound to the group with.
- Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
- // email is the exact email address that may accept this invite code, if specified.
- Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"`
- // if single_use is set to true, then the invite will be deleted after a user joins the group.
- SingleUse bool `protobuf:"varint,5,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"`
-}
-
-func (x *GroupInviteRequest) Reset() {
- *x = GroupInviteRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupInviteRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupInviteRequest) ProtoMessage() {}
-
-func (x *GroupInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupInviteRequest.ProtoReflect.Descriptor instead.
-func (*GroupInviteRequest) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *GroupInviteRequest) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *GroupInviteRequest) GetTtl() *durationpb.Duration {
- if x != nil {
- return x.Ttl
- }
- return nil
-}
-
-func (x *GroupInviteRequest) GetRole() string {
- if x != nil {
- return x.Role
- }
- return ""
-}
-
-func (x *GroupInviteRequest) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-func (x *GroupInviteRequest) GetSingleUse() bool {
- if x != nil {
- return x.SingleUse
- }
- return false
-}
-
-type DeleteGroupInviteRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteGroupInviteRequest) Reset() {
- *x = DeleteGroupInviteRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteGroupInviteRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteGroupInviteRequest) ProtoMessage() {}
-
-func (x *DeleteGroupInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteGroupInviteRequest.ProtoReflect.Descriptor instead.
-func (*DeleteGroupInviteRequest) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *DeleteGroupInviteRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type GroupInviteFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // group is used to identify the group this record is rooted under.
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
- // key_id is the identify the verification key for this code.
- KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
-}
-
-func (x *GroupInviteFilter) Reset() {
- *x = GroupInviteFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupInviteFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupInviteFilter) ProtoMessage() {}
-
-func (x *GroupInviteFilter) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupInviteFilter.ProtoReflect.Descriptor instead.
-func (*GroupInviteFilter) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *GroupInviteFilter) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *GroupInviteFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *GroupInviteFilter) GetKeyId() string {
- if x != nil {
- return x.KeyId
- }
- return ""
-}
-
-type RegistrationRequest_Human struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // code is the json-encoded authentication code.
- // +optional
- Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
-}
-
-func (x *RegistrationRequest_Human) Reset() {
- *x = RegistrationRequest_Human{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RegistrationRequest_Human) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RegistrationRequest_Human) ProtoMessage() {}
-
-func (x *RegistrationRequest_Human) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RegistrationRequest_Human.ProtoReflect.Descriptor instead.
-func (*RegistrationRequest_Human) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *RegistrationRequest_Human) GetCode() string {
- if x != nil {
- return x.Code
- }
- return ""
-}
-
-type RegistrationRequest_Cluster struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // code is the json-encoded authentication code.
- Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
- // cluster_id is an optional cluster id if registering a cluster.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
-}
-
-func (x *RegistrationRequest_Cluster) Reset() {
- *x = RegistrationRequest_Cluster{}
- if protoimpl.UnsafeEnabled {
- mi := &file_group_invites_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RegistrationRequest_Cluster) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RegistrationRequest_Cluster) ProtoMessage() {}
-
-func (x *RegistrationRequest_Cluster) ProtoReflect() protoreflect.Message {
- mi := &file_group_invites_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RegistrationRequest_Cluster.ProtoReflect.Descriptor instead.
-func (*RegistrationRequest_Cluster) Descriptor() ([]byte, []int) {
- return file_group_invites_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *RegistrationRequest_Cluster) GetCode() string {
- if x != nil {
- return x.Code
- }
- return ""
-}
-
-func (x *RegistrationRequest_Cluster) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
-var File_group_invites_platform_proto protoreflect.FileDescriptor
-
-var file_group_invites_platform_proto_rawDesc = []byte{
- 0x0a, 0x1c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x02, 0x0a, 0x13, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
- 0x48, 0x75, 0x6d, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x50,
- 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x1a, 0x1b, 0x0a, 0x05, 0x48, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x1a, 0x3c, 0x0a,
- 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
- 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x99, 0x02,
- 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
- 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61,
- 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12,
- 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69,
- 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
- 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa8,
- 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c,
- 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69,
- 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
- 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a,
- 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x32,
- 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
- 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x78,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
- 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
- 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a,
- 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x10,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10, 0x01,
- 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01, 0x0a,
- 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
- 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_group_invites_platform_proto_rawDescOnce sync.Once
- file_group_invites_platform_proto_rawDescData = file_group_invites_platform_proto_rawDesc
-)
-
-func file_group_invites_platform_proto_rawDescGZIP() []byte {
- file_group_invites_platform_proto_rawDescOnce.Do(func() {
- file_group_invites_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_invites_platform_proto_rawDescData)
- })
- return file_group_invites_platform_proto_rawDescData
-}
-
-var file_group_invites_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_group_invites_platform_proto_goTypes = []interface{}{
- (*RegistrationRequest)(nil), // 0: chainguard.platform.iam.RegistrationRequest
- (*GroupInvite)(nil), // 1: chainguard.platform.iam.GroupInvite
- (*StoredGroupInvite)(nil), // 2: chainguard.platform.iam.StoredGroupInvite
- (*GroupInviteList)(nil), // 3: chainguard.platform.iam.GroupInviteList
- (*GroupInviteRequest)(nil), // 4: chainguard.platform.iam.GroupInviteRequest
- (*DeleteGroupInviteRequest)(nil), // 5: chainguard.platform.iam.DeleteGroupInviteRequest
- (*GroupInviteFilter)(nil), // 6: chainguard.platform.iam.GroupInviteFilter
- (*RegistrationRequest_Human)(nil), // 7: chainguard.platform.iam.RegistrationRequest.Human
- (*RegistrationRequest_Cluster)(nil), // 8: chainguard.platform.iam.RegistrationRequest.Cluster
- (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
- (*Role)(nil), // 10: chainguard.platform.iam.Role
- (*durationpb.Duration)(nil), // 11: google.protobuf.Duration
- (*emptypb.Empty)(nil), // 12: google.protobuf.Empty
-}
-var file_group_invites_platform_proto_depIdxs = []int32{
- 7, // 0: chainguard.platform.iam.RegistrationRequest.human:type_name -> chainguard.platform.iam.RegistrationRequest.Human
- 8, // 1: chainguard.platform.iam.RegistrationRequest.cluster:type_name -> chainguard.platform.iam.RegistrationRequest.Cluster
- 9, // 2: chainguard.platform.iam.GroupInvite.expiration:type_name -> google.protobuf.Timestamp
- 10, // 3: chainguard.platform.iam.GroupInvite.role:type_name -> chainguard.platform.iam.Role
- 9, // 4: chainguard.platform.iam.StoredGroupInvite.expiration:type_name -> google.protobuf.Timestamp
- 10, // 5: chainguard.platform.iam.StoredGroupInvite.role:type_name -> chainguard.platform.iam.Role
- 9, // 6: chainguard.platform.iam.StoredGroupInvite.created_at:type_name -> google.protobuf.Timestamp
- 2, // 7: chainguard.platform.iam.GroupInviteList.items:type_name -> chainguard.platform.iam.StoredGroupInvite
- 11, // 8: chainguard.platform.iam.GroupInviteRequest.ttl:type_name -> google.protobuf.Duration
- 4, // 9: chainguard.platform.iam.GroupInvites.Create:input_type -> chainguard.platform.iam.GroupInviteRequest
- 4, // 10: chainguard.platform.iam.GroupInvites.CreateWithGroup:input_type -> chainguard.platform.iam.GroupInviteRequest
- 6, // 11: chainguard.platform.iam.GroupInvites.List:input_type -> chainguard.platform.iam.GroupInviteFilter
- 5, // 12: chainguard.platform.iam.GroupInvites.Delete:input_type -> chainguard.platform.iam.DeleteGroupInviteRequest
- 1, // 13: chainguard.platform.iam.GroupInvites.Create:output_type -> chainguard.platform.iam.GroupInvite
- 1, // 14: chainguard.platform.iam.GroupInvites.CreateWithGroup:output_type -> chainguard.platform.iam.GroupInvite
- 3, // 15: chainguard.platform.iam.GroupInvites.List:output_type -> chainguard.platform.iam.GroupInviteList
- 12, // 16: chainguard.platform.iam.GroupInvites.Delete:output_type -> google.protobuf.Empty
- 13, // [13:17] is the sub-list for method output_type
- 9, // [9:13] 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_group_invites_platform_proto_init() }
-func file_group_invites_platform_proto_init() {
- if File_group_invites_platform_proto != nil {
- return
- }
- file_role_platform_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_group_invites_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegistrationRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupInvite); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StoredGroupInvite); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupInviteList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupInviteRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteGroupInviteRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupInviteFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegistrationRequest_Human); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_group_invites_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RegistrationRequest_Cluster); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_group_invites_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*RegistrationRequest_Human_)(nil),
- (*RegistrationRequest_Cluster_)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_group_invites_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 9,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_group_invites_platform_proto_goTypes,
- DependencyIndexes: file_group_invites_platform_proto_depIdxs,
- MessageInfos: file_group_invites_platform_proto_msgTypes,
- }.Build()
- File_group_invites_platform_proto = out.File
- file_group_invites_platform_proto_rawDesc = nil
- file_group_invites_platform_proto_goTypes = nil
- file_group_invites_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.gw.go b/proto/platform/iam/v1/group_invites.platform.pb.gw.go
deleted file mode 100644
index d1e9d95c..00000000
--- a/proto/platform/iam/v1/group_invites.platform.pb.gw.go
+++ /dev/null
@@ -1,467 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: group_invites.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_GroupInvites_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupInvites_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["group"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
- }
-
- protoReq.Group, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_GroupInvites_CreateWithGroup_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.CreateWithGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupInvites_CreateWithGroup_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.CreateWithGroup(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_GroupInvites_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_GroupInvites_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupInvites_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupInvites_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq GroupInviteFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupInvites_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_GroupInvites_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteGroupInviteRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_GroupInvites_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteGroupInviteRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterGroupInvitesHandlerServer registers the http handlers for service GroupInvites to "mux".
-// UnaryRPC :call GroupInvitesServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupInvitesHandlerFromEndpoint instead.
-func RegisterGroupInvitesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupInvitesServer) error {
-
- mux.Handle("POST", pattern_GroupInvites_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Create", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupInvites_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_GroupInvites_CreateWithGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/CreateWithGroup", runtime.WithHTTPPathPattern("/chainguard.platform.iam.GroupInvites/CreateWithGroup"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupInvites_CreateWithGroup_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_CreateWithGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_GroupInvites_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/List", runtime.WithHTTPPathPattern("/iam/v1/group_invites"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupInvites_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_GroupInvites_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Delete", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_GroupInvites_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterGroupInvitesHandlerFromEndpoint is same as RegisterGroupInvitesHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterGroupInvitesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterGroupInvitesHandler(ctx, mux, conn)
-}
-
-// RegisterGroupInvitesHandler registers the http handlers for service GroupInvites to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterGroupInvitesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterGroupInvitesHandlerClient(ctx, mux, NewGroupInvitesClient(conn))
-}
-
-// RegisterGroupInvitesHandlerClient registers the http handlers for service GroupInvites
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupInvitesClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupInvitesClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "GroupInvitesClient" to call the correct interceptors.
-func RegisterGroupInvitesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupInvitesClient) error {
-
- mux.Handle("POST", pattern_GroupInvites_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Create", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{group=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupInvites_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_GroupInvites_CreateWithGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/CreateWithGroup", runtime.WithHTTPPathPattern("/chainguard.platform.iam.GroupInvites/CreateWithGroup"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupInvites_CreateWithGroup_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_CreateWithGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_GroupInvites_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/List", runtime.WithHTTPPathPattern("/iam/v1/group_invites"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupInvites_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_GroupInvites_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Delete", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_GroupInvites_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_GroupInvites_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_GroupInvites_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "group_invites", "group"}, ""))
-
- pattern_GroupInvites_CreateWithGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.iam.GroupInvites", "CreateWithGroup"}, ""))
-
- pattern_GroupInvites_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "group_invites"}, ""))
-
- pattern_GroupInvites_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "group_invites", "id"}, ""))
-)
-
-var (
- forward_GroupInvites_Create_0 = runtime.ForwardResponseMessage
-
- forward_GroupInvites_CreateWithGroup_0 = runtime.ForwardResponseMessage
-
- forward_GroupInvites_List_0 = runtime.ForwardResponseMessage
-
- forward_GroupInvites_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/group_invites.platform.proto b/proto/platform/iam/v1/group_invites.platform.proto
deleted file mode 100644
index c7f6ae8a..00000000
--- a/proto/platform/iam/v1/group_invites.platform.proto
+++ /dev/null
@@ -1,174 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMGroupInviteProto";
-
-package chainguard.platform.iam;
-
-import "google/api/annotations.proto";
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "role.platform.proto";
-
-service GroupInvites {
- rpc Create(GroupInviteRequest) returns (GroupInvite) {
- option (google.api.http) = {
- post: "/iam/v1/group_invites/{group=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- CAP_IAM_GROUP_INVITES_CREATE,
- // Creating a Group Invite is effectively a RoleBinding
- // promise, so check that the caller has permission to
- // create RoleBindings as well.
- CAP_IAM_ROLE_BINDINGS_CREATE
- ]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.group_invite.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- // CreateWithGroup is an internal API for creating a new root group
- // where the caller is NOT added as an Owner, but an invite code to
- // become the owner of the group is returned. This is not intended
- // for external consumption, and will not be supported.
- // Do not use this!
- rpc CreateWithGroup(GroupInviteRequest) returns (GroupInvite) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- CAP_IAM_GROUP_INVITES_CREATE,
- // Creating a Group Invite is effectively a RoleBinding
- // promise, so check that the caller has permission to
- // create RoleBindings as well.
- CAP_IAM_ROLE_BINDINGS_CREATE
- ]
- // We check for the capabilities above in the token, but
- // this method has special undocumented authentication
- // semantics since it is not intended to external consumption.
- unscoped: true
- }
- };
- }
-
- rpc List(GroupInviteFilter) returns (GroupInviteList) {
- option (google.api.http) = {
- get: "/iam/v1/group_invites"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUP_INVITES_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteGroupInviteRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/group_invites/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_GROUP_INVITES_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.group_invite.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message RegistrationRequest {
- oneof kind {
- Human human = 1;
- Cluster cluster = 2;
- }
-
- message Human {
- // code is the json-encoded authentication code.
- // +optional
- string code = 1;
- }
-
- message Cluster {
- // code is the json-encoded authentication code.
- string code = 1;
- // cluster_id is an optional cluster id if registering a cluster.
- string cluster_id = 2;
- }
-}
-
-message GroupInvite {
- // id, The group UIDP under which this invite resides.
- string id = 1;
- // expiration, timestamp this invite becomes no longer valid.
- google.protobuf.Timestamp expiration = 2;
- // key_id is used to identify the verification key for this code.
- string key_id = 3;
- // role is the role the invited identity will be role-bound to the group with.
- chainguard.platform.iam.Role role = 4;
- // code is the json-encoded authentication code.
- string code = 5;
-}
-
-message StoredGroupInvite {
- // id, The group UIDP under which this invite resides.
- string id = 1;
- // expiration, timestamp this invite becomes no longer valid.
- google.protobuf.Timestamp expiration = 2;
- // key_id is used to identify the verification key for this code.
- string key_id = 3;
- // role is the role the invited identity will be role-bound to the group with.
- chainguard.platform.iam.Role role = 4;
- // email is the email address that is allowed to accept this invite code. If blank,
- // anyone with the invite code an accept.
- string email = 5;
- // created_at is the timestamp for when the invite was created.
- google.protobuf.Timestamp created_at = 6;
- // single_use indicates whether or not the invite will be deleted after a user joins the group.
- bool single_use = 7;
-}
-
-message GroupInviteList {
- repeated StoredGroupInvite items = 1;
-}
-
-message GroupInviteRequest {
- // group, The Group UIDP path under which the new group Invite targets.
- string group = 1 [(chainguard.annotations.iam_scope) = true];
- // expiration, timestamp this invite becomes no longer valid.
- google.protobuf.Duration ttl = 2;
- // role is the Role UIDP the invited identity will be role-bound to the group with.
- string role = 3;
- // email is the exact email address that may accept this invite code, if specified.
- string email = 4;
- // if single_use is set to true, then the invite will be deleted after a user joins the group.
- bool single_use = 5;
-}
-
-message DeleteGroupInviteRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message GroupInviteFilter {
- // group is used to identify the group this record is rooted under.
- string group = 1;
- // id is the exact UID of the record.
- string id = 2;
- // key_id is the identify the verification key for this code.
- string key_id = 3;
-}
diff --git a/proto/platform/iam/v1/group_invites.platform_grpc.pb.go b/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
deleted file mode 100644
index 9a9b9c75..00000000
--- a/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
+++ /dev/null
@@ -1,231 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: group_invites.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- GroupInvites_Create_FullMethodName = "/chainguard.platform.iam.GroupInvites/Create"
- GroupInvites_CreateWithGroup_FullMethodName = "/chainguard.platform.iam.GroupInvites/CreateWithGroup"
- GroupInvites_List_FullMethodName = "/chainguard.platform.iam.GroupInvites/List"
- GroupInvites_Delete_FullMethodName = "/chainguard.platform.iam.GroupInvites/Delete"
-)
-
-// GroupInvitesClient is the client API for GroupInvites service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type GroupInvitesClient interface {
- Create(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error)
- // CreateWithGroup is an internal API for creating a new root group
- // where the caller is NOT added as an Owner, but an invite code to
- // become the owner of the group is returned. This is not intended
- // for external consumption, and will not be supported.
- // Do not use this!
- CreateWithGroup(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error)
- List(ctx context.Context, in *GroupInviteFilter, opts ...grpc.CallOption) (*GroupInviteList, error)
- Delete(ctx context.Context, in *DeleteGroupInviteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type groupInvitesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewGroupInvitesClient(cc grpc.ClientConnInterface) GroupInvitesClient {
- return &groupInvitesClient{cc}
-}
-
-func (c *groupInvitesClient) Create(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error) {
- out := new(GroupInvite)
- err := c.cc.Invoke(ctx, GroupInvites_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupInvitesClient) CreateWithGroup(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error) {
- out := new(GroupInvite)
- err := c.cc.Invoke(ctx, GroupInvites_CreateWithGroup_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupInvitesClient) List(ctx context.Context, in *GroupInviteFilter, opts ...grpc.CallOption) (*GroupInviteList, error) {
- out := new(GroupInviteList)
- err := c.cc.Invoke(ctx, GroupInvites_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *groupInvitesClient) Delete(ctx context.Context, in *DeleteGroupInviteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, GroupInvites_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// GroupInvitesServer is the server API for GroupInvites service.
-// All implementations must embed UnimplementedGroupInvitesServer
-// for forward compatibility
-type GroupInvitesServer interface {
- Create(context.Context, *GroupInviteRequest) (*GroupInvite, error)
- // CreateWithGroup is an internal API for creating a new root group
- // where the caller is NOT added as an Owner, but an invite code to
- // become the owner of the group is returned. This is not intended
- // for external consumption, and will not be supported.
- // Do not use this!
- CreateWithGroup(context.Context, *GroupInviteRequest) (*GroupInvite, error)
- List(context.Context, *GroupInviteFilter) (*GroupInviteList, error)
- Delete(context.Context, *DeleteGroupInviteRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedGroupInvitesServer()
-}
-
-// UnimplementedGroupInvitesServer must be embedded to have forward compatible implementations.
-type UnimplementedGroupInvitesServer struct {
-}
-
-func (UnimplementedGroupInvitesServer) Create(context.Context, *GroupInviteRequest) (*GroupInvite, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedGroupInvitesServer) CreateWithGroup(context.Context, *GroupInviteRequest) (*GroupInvite, error) {
- return nil, status.Errorf(codes.Unimplemented, "method CreateWithGroup not implemented")
-}
-func (UnimplementedGroupInvitesServer) List(context.Context, *GroupInviteFilter) (*GroupInviteList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedGroupInvitesServer) Delete(context.Context, *DeleteGroupInviteRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedGroupInvitesServer) mustEmbedUnimplementedGroupInvitesServer() {}
-
-// UnsafeGroupInvitesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to GroupInvitesServer will
-// result in compilation errors.
-type UnsafeGroupInvitesServer interface {
- mustEmbedUnimplementedGroupInvitesServer()
-}
-
-func RegisterGroupInvitesServer(s grpc.ServiceRegistrar, srv GroupInvitesServer) {
- s.RegisterService(&GroupInvites_ServiceDesc, srv)
-}
-
-func _GroupInvites_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GroupInviteRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupInvitesServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupInvites_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupInvitesServer).Create(ctx, req.(*GroupInviteRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupInvites_CreateWithGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GroupInviteRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupInvitesServer).CreateWithGroup(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupInvites_CreateWithGroup_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupInvitesServer).CreateWithGroup(ctx, req.(*GroupInviteRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupInvites_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GroupInviteFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupInvitesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupInvites_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupInvitesServer).List(ctx, req.(*GroupInviteFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _GroupInvites_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteGroupInviteRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(GroupInvitesServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: GroupInvites_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(GroupInvitesServer).Delete(ctx, req.(*DeleteGroupInviteRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// GroupInvites_ServiceDesc is the grpc.ServiceDesc for GroupInvites service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var GroupInvites_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.GroupInvites",
- HandlerType: (*GroupInvitesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _GroupInvites_Create_Handler,
- },
- {
- MethodName: "CreateWithGroup",
- Handler: _GroupInvites_CreateWithGroup_Handler,
- },
- {
- MethodName: "List",
- Handler: _GroupInvites_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _GroupInvites_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "group_invites.platform.proto",
-}
diff --git a/proto/platform/iam/v1/identity.platform.event.go b/proto/platform/iam/v1/identity.platform.event.go
deleted file mode 100644
index 12152a4d..00000000
--- a/proto/platform/iam/v1/identity.platform.event.go
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Identity) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Identity) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteIdentityRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteIdentityRequest) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/identity.platform.pb.go b/proto/platform/iam/v1/identity.platform.pb.go
deleted file mode 100644
index 693c98f5..00000000
--- a/proto/platform/iam/v1/identity.platform.pb.go
+++ /dev/null
@@ -1,1357 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: identity.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type ServicePrincipal int32
-
-const (
- ServicePrincipal_UNKNOWN ServicePrincipal = 0
- ServicePrincipal_COSIGNED ServicePrincipal = 1
- ServicePrincipal_INGESTER ServicePrincipal = 2
- ServicePrincipal_CATALOG_SYNCER ServicePrincipal = 3
-)
-
-// Enum value maps for ServicePrincipal.
-var (
- ServicePrincipal_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "COSIGNED",
- 2: "INGESTER",
- 3: "CATALOG_SYNCER",
- }
- ServicePrincipal_value = map[string]int32{
- "UNKNOWN": 0,
- "COSIGNED": 1,
- "INGESTER": 2,
- "CATALOG_SYNCER": 3,
- }
-)
-
-func (x ServicePrincipal) Enum() *ServicePrincipal {
- p := new(ServicePrincipal)
- *p = x
- return p
-}
-
-func (x ServicePrincipal) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ServicePrincipal) Descriptor() protoreflect.EnumDescriptor {
- return file_identity_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (ServicePrincipal) Type() protoreflect.EnumType {
- return &file_identity_platform_proto_enumTypes[0]
-}
-
-func (x ServicePrincipal) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ServicePrincipal.Descriptor instead.
-func (ServicePrincipal) EnumDescriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{0}
-}
-
-type Identity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is unique identifier of this specific identity.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human readable name of identity.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human readable of identity.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // created_at is the timestamp for when the identity was created.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // updated_at is the timestamp for when the identity was last updated.
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- // relationship is used to describe how this identity relates to
- // identities coming from 3rd party Identity Providers (IdPs)
- //
- // Types that are assignable to Relationship:
- //
- // *Identity_ClaimMatch_
- // *Identity_Static
- // *Identity_ServicePrincipal
- // *Identity_AwsIdentity
- Relationship isIdentity_Relationship `protobuf_oneof:"relationship"`
-}
-
-func (x *Identity) Reset() {
- *x = Identity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity) ProtoMessage() {}
-
-func (x *Identity) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
-func (*Identity) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Identity) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Identity) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Identity) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Identity) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *Identity) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
- }
- return nil
-}
-
-func (m *Identity) GetRelationship() isIdentity_Relationship {
- if m != nil {
- return m.Relationship
- }
- return nil
-}
-
-func (x *Identity) GetClaimMatch() *Identity_ClaimMatch {
- if x, ok := x.GetRelationship().(*Identity_ClaimMatch_); ok {
- return x.ClaimMatch
- }
- return nil
-}
-
-func (x *Identity) GetStatic() *Identity_StaticKeys {
- if x, ok := x.GetRelationship().(*Identity_Static); ok {
- return x.Static
- }
- return nil
-}
-
-func (x *Identity) GetServicePrincipal() ServicePrincipal {
- if x, ok := x.GetRelationship().(*Identity_ServicePrincipal); ok {
- return x.ServicePrincipal
- }
- return ServicePrincipal_UNKNOWN
-}
-
-func (x *Identity) GetAwsIdentity() *Identity_AWSIdentity {
- if x, ok := x.GetRelationship().(*Identity_AwsIdentity); ok {
- return x.AwsIdentity
- }
- return nil
-}
-
-type isIdentity_Relationship interface {
- isIdentity_Relationship()
-}
-
-type Identity_ClaimMatch_ struct {
- // claim_match checks the third party IdP token's claims against one
- // or more configured patterns.
- ClaimMatch *Identity_ClaimMatch `protobuf:"bytes,10,opt,name=claim_match,json=claimMatch,proto3,oneof"`
-}
-
-type Identity_Static struct {
- // static is equivalent to literal, but instead of discovering the
- // IdP's verification keys we verify the identity using pre-registered
- // verification keys. This is intended for use with identities from
- // providers without an "online" issuer (network accessible to our IdP),
- // such as a KinD/minikube cluster.
- // NOTE: because this path does not have a mechanism for key rotation
- // the identity will expire, with a maximum lifetime of 30d.
- Static *Identity_StaticKeys `protobuf:"bytes,11,opt,name=static,proto3,oneof"`
-}
-
-type Identity_ServicePrincipal struct {
- // service_principal is the name of the Chainguard service that is
- // allowed to assume this identity. These names correlate with the
- // service names used in impersonation with account associations.
- ServicePrincipal ServicePrincipal `protobuf:"varint,12,opt,name=service_principal,json=servicePrincipal,proto3,enum=chainguard.platform.iam.ServicePrincipal,oneof"`
-}
-
-type Identity_AwsIdentity struct {
- // aws_identity matches AWS IAM users and roles to an identity
- AwsIdentity *Identity_AWSIdentity `protobuf:"bytes,13,opt,name=aws_identity,json=awsIdentity,proto3,oneof"`
-}
-
-func (*Identity_ClaimMatch_) isIdentity_Relationship() {}
-
-func (*Identity_Static) isIdentity_Relationship() {}
-
-func (*Identity_ServicePrincipal) isIdentity_Relationship() {}
-
-func (*Identity_AwsIdentity) isIdentity_Relationship() {}
-
-type CreateIdentityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group UIDP path under which the new Identity resides.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Identity to create.
- Identity *Identity `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
-}
-
-func (x *CreateIdentityRequest) Reset() {
- *x = CreateIdentityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateIdentityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateIdentityRequest) ProtoMessage() {}
-
-func (x *CreateIdentityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateIdentityRequest.ProtoReflect.Descriptor instead.
-func (*CreateIdentityRequest) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CreateIdentityRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateIdentityRequest) GetIdentity() *Identity {
- if x != nil {
- return x.Identity
- }
- return nil
-}
-
-type DeleteIdentityRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ID, UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteIdentityRequest) Reset() {
- *x = DeleteIdentityRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteIdentityRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteIdentityRequest) ProtoMessage() {}
-
-func (x *DeleteIdentityRequest) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteIdentityRequest.ProtoReflect.Descriptor instead.
-func (*DeleteIdentityRequest) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *DeleteIdentityRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type IdentityList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Identity `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *IdentityList) Reset() {
- *x = IdentityList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityList) ProtoMessage() {}
-
-func (x *IdentityList) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityList.ProtoReflect.Descriptor instead.
-func (*IdentityList) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *IdentityList) GetItems() []*Identity {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type IdentityFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // id is unique identifier to look up.
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *IdentityFilter) Reset() {
- *x = IdentityFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityFilter) ProtoMessage() {}
-
-func (x *IdentityFilter) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityFilter.ProtoReflect.Descriptor instead.
-func (*IdentityFilter) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *IdentityFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *IdentityFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type LookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // issuer is the oidc issuer to look up.
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
- // subject is the subject to look up.
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
-}
-
-func (x *LookupRequest) Reset() {
- *x = LookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *LookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LookupRequest) ProtoMessage() {}
-
-func (x *LookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use LookupRequest.ProtoReflect.Descriptor instead.
-func (*LookupRequest) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *LookupRequest) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *LookupRequest) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-type Identity_ClaimMatch struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required, matches the `iss` claim.
- //
- // Types that are assignable to Iss:
- //
- // *Identity_ClaimMatch_Issuer
- // *Identity_ClaimMatch_IssuerPattern
- Iss isIdentity_ClaimMatch_Iss `protobuf_oneof:"iss"`
- // Required, matches the `sub` claim.
- //
- // Types that are assignable to Sub:
- //
- // *Identity_ClaimMatch_Subject
- // *Identity_ClaimMatch_SubjectPattern
- Sub isIdentity_ClaimMatch_Sub `protobuf_oneof:"sub"`
- // Optional, matches the `aud` claim.
- // When unspecified, this defaults to the hostname of the SaaS
- // environment's issuer.
- //
- // Types that are assignable to Aud:
- //
- // *Identity_ClaimMatch_Audience
- // *Identity_ClaimMatch_AudiencePattern
- Aud isIdentity_ClaimMatch_Aud `protobuf_oneof:"aud"`
- // claims is a mapping from the name of a custom claim
- // to a literal matching that claim's value.
- Claims map[string]string `protobuf:"bytes,7,rep,name=claims,proto3" json:"claims,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // claim_patterns is a mapping from the name of a custom claim
- // to a regular expression for matching that claim's value.
- ClaimPatterns map[string]string `protobuf:"bytes,8,rep,name=claim_patterns,json=claimPatterns,proto3" json:"claim_patterns,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Identity_ClaimMatch) Reset() {
- *x = Identity_ClaimMatch{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity_ClaimMatch) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity_ClaimMatch) ProtoMessage() {}
-
-func (x *Identity_ClaimMatch) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity_ClaimMatch.ProtoReflect.Descriptor instead.
-func (*Identity_ClaimMatch) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (m *Identity_ClaimMatch) GetIss() isIdentity_ClaimMatch_Iss {
- if m != nil {
- return m.Iss
- }
- return nil
-}
-
-func (x *Identity_ClaimMatch) GetIssuer() string {
- if x, ok := x.GetIss().(*Identity_ClaimMatch_Issuer); ok {
- return x.Issuer
- }
- return ""
-}
-
-func (x *Identity_ClaimMatch) GetIssuerPattern() string {
- if x, ok := x.GetIss().(*Identity_ClaimMatch_IssuerPattern); ok {
- return x.IssuerPattern
- }
- return ""
-}
-
-func (m *Identity_ClaimMatch) GetSub() isIdentity_ClaimMatch_Sub {
- if m != nil {
- return m.Sub
- }
- return nil
-}
-
-func (x *Identity_ClaimMatch) GetSubject() string {
- if x, ok := x.GetSub().(*Identity_ClaimMatch_Subject); ok {
- return x.Subject
- }
- return ""
-}
-
-func (x *Identity_ClaimMatch) GetSubjectPattern() string {
- if x, ok := x.GetSub().(*Identity_ClaimMatch_SubjectPattern); ok {
- return x.SubjectPattern
- }
- return ""
-}
-
-func (m *Identity_ClaimMatch) GetAud() isIdentity_ClaimMatch_Aud {
- if m != nil {
- return m.Aud
- }
- return nil
-}
-
-func (x *Identity_ClaimMatch) GetAudience() string {
- if x, ok := x.GetAud().(*Identity_ClaimMatch_Audience); ok {
- return x.Audience
- }
- return ""
-}
-
-func (x *Identity_ClaimMatch) GetAudiencePattern() string {
- if x, ok := x.GetAud().(*Identity_ClaimMatch_AudiencePattern); ok {
- return x.AudiencePattern
- }
- return ""
-}
-
-func (x *Identity_ClaimMatch) GetClaims() map[string]string {
- if x != nil {
- return x.Claims
- }
- return nil
-}
-
-func (x *Identity_ClaimMatch) GetClaimPatterns() map[string]string {
- if x != nil {
- return x.ClaimPatterns
- }
- return nil
-}
-
-type isIdentity_ClaimMatch_Iss interface {
- isIdentity_ClaimMatch_Iss()
-}
-
-type Identity_ClaimMatch_Issuer struct {
- // issuer of the OIDC ID tokens issued for this identity.
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3,oneof"`
-}
-
-type Identity_ClaimMatch_IssuerPattern struct {
- // issuer_pattern is a regular expression for matching the
- // token's issuer claim.
- IssuerPattern string `protobuf:"bytes,2,opt,name=issuer_pattern,json=issuerPattern,proto3,oneof"`
-}
-
-func (*Identity_ClaimMatch_Issuer) isIdentity_ClaimMatch_Iss() {}
-
-func (*Identity_ClaimMatch_IssuerPattern) isIdentity_ClaimMatch_Iss() {}
-
-type isIdentity_ClaimMatch_Sub interface {
- isIdentity_ClaimMatch_Sub()
-}
-
-type Identity_ClaimMatch_Subject struct {
- // subject of OIDC ID tokens issued for this identity.
- Subject string `protobuf:"bytes,3,opt,name=subject,proto3,oneof"`
-}
-
-type Identity_ClaimMatch_SubjectPattern struct {
- // subject_pattern is a regular expression for matching the
- // token's subject claim.
- SubjectPattern string `protobuf:"bytes,4,opt,name=subject_pattern,json=subjectPattern,proto3,oneof"`
-}
-
-func (*Identity_ClaimMatch_Subject) isIdentity_ClaimMatch_Sub() {}
-
-func (*Identity_ClaimMatch_SubjectPattern) isIdentity_ClaimMatch_Sub() {}
-
-type isIdentity_ClaimMatch_Aud interface {
- isIdentity_ClaimMatch_Aud()
-}
-
-type Identity_ClaimMatch_Audience struct {
- // audience of OIDC ID tokens issued for this identity.
- Audience string `protobuf:"bytes,5,opt,name=audience,proto3,oneof"`
-}
-
-type Identity_ClaimMatch_AudiencePattern struct {
- // audience_pattern is a regular expression for matching the
- // token's audience claim.
- AudiencePattern string `protobuf:"bytes,6,opt,name=audience_pattern,json=audiencePattern,proto3,oneof"`
-}
-
-func (*Identity_ClaimMatch_Audience) isIdentity_ClaimMatch_Aud() {}
-
-func (*Identity_ClaimMatch_AudiencePattern) isIdentity_ClaimMatch_Aud() {}
-
-type Identity_StaticKeys struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // issuer of the OIDC ID tokens issued for this identity.
- // Matches the `iss` claim.
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
- // subject of OIDC ID tokens issued for this identity.
- // Matches the `sub` claim.
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
- // issuer_keys is JWKS-formatted public keys for the issuer.
- // Required, otherwise use Literal.
- IssuerKeys string `protobuf:"bytes,4,opt,name=issuer_keys,json=issuerKeys,proto3" json:"issuer_keys,omitempty"`
- // expiration is the time when the issuer_keys will expire.
- // Defaults to / Maximum of 30 days after creation time.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"`
-}
-
-func (x *Identity_StaticKeys) Reset() {
- *x = Identity_StaticKeys{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity_StaticKeys) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity_StaticKeys) ProtoMessage() {}
-
-func (x *Identity_StaticKeys) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity_StaticKeys.ProtoReflect.Descriptor instead.
-func (*Identity_StaticKeys) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *Identity_StaticKeys) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *Identity_StaticKeys) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-func (x *Identity_StaticKeys) GetIssuerKeys() string {
- if x != nil {
- return x.IssuerKeys
- }
- return ""
-}
-
-func (x *Identity_StaticKeys) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
-type Identity_AWSIdentity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Required, matches the `Account` field in the GetCallerID AWS IAM
- // response
- AwsAccount string `protobuf:"bytes,1,opt,name=aws_account,json=awsAccount,proto3" json:"aws_account,omitempty"`
- // Required, matches the `Arn` field in the GetCallerID AWS IAM response
- //
- // Types that are assignable to AwsArn:
- //
- // *Identity_AWSIdentity_Arn
- // *Identity_AWSIdentity_ArnPattern
- AwsArn isIdentity_AWSIdentity_AwsArn `protobuf_oneof:"aws_arn"`
- // Required, matches the `UserId` field of th GetCallerID AWS IAM response
- //
- // Types that are assignable to AwsUserId:
- //
- // *Identity_AWSIdentity_UserId
- // *Identity_AWSIdentity_UserIdPattern
- AwsUserId isIdentity_AWSIdentity_AwsUserId `protobuf_oneof:"aws_user_id"`
-}
-
-func (x *Identity_AWSIdentity) Reset() {
- *x = Identity_AWSIdentity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Identity_AWSIdentity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Identity_AWSIdentity) ProtoMessage() {}
-
-func (x *Identity_AWSIdentity) ProtoReflect() protoreflect.Message {
- mi := &file_identity_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Identity_AWSIdentity.ProtoReflect.Descriptor instead.
-func (*Identity_AWSIdentity) Descriptor() ([]byte, []int) {
- return file_identity_platform_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *Identity_AWSIdentity) GetAwsAccount() string {
- if x != nil {
- return x.AwsAccount
- }
- return ""
-}
-
-func (m *Identity_AWSIdentity) GetAwsArn() isIdentity_AWSIdentity_AwsArn {
- if m != nil {
- return m.AwsArn
- }
- return nil
-}
-
-func (x *Identity_AWSIdentity) GetArn() string {
- if x, ok := x.GetAwsArn().(*Identity_AWSIdentity_Arn); ok {
- return x.Arn
- }
- return ""
-}
-
-func (x *Identity_AWSIdentity) GetArnPattern() string {
- if x, ok := x.GetAwsArn().(*Identity_AWSIdentity_ArnPattern); ok {
- return x.ArnPattern
- }
- return ""
-}
-
-func (m *Identity_AWSIdentity) GetAwsUserId() isIdentity_AWSIdentity_AwsUserId {
- if m != nil {
- return m.AwsUserId
- }
- return nil
-}
-
-func (x *Identity_AWSIdentity) GetUserId() string {
- if x, ok := x.GetAwsUserId().(*Identity_AWSIdentity_UserId); ok {
- return x.UserId
- }
- return ""
-}
-
-func (x *Identity_AWSIdentity) GetUserIdPattern() string {
- if x, ok := x.GetAwsUserId().(*Identity_AWSIdentity_UserIdPattern); ok {
- return x.UserIdPattern
- }
- return ""
-}
-
-type isIdentity_AWSIdentity_AwsArn interface {
- isIdentity_AWSIdentity_AwsArn()
-}
-
-type Identity_AWSIdentity_Arn struct {
- // Exact match to Arn of AWS Identity
- Arn string `protobuf:"bytes,3,opt,name=arn,proto3,oneof"`
-}
-
-type Identity_AWSIdentity_ArnPattern struct {
- // Regular expression for matching Arn
- ArnPattern string `protobuf:"bytes,4,opt,name=arn_pattern,json=arnPattern,proto3,oneof"`
-}
-
-func (*Identity_AWSIdentity_Arn) isIdentity_AWSIdentity_AwsArn() {}
-
-func (*Identity_AWSIdentity_ArnPattern) isIdentity_AWSIdentity_AwsArn() {}
-
-type isIdentity_AWSIdentity_AwsUserId interface {
- isIdentity_AWSIdentity_AwsUserId()
-}
-
-type Identity_AWSIdentity_UserId struct {
- // Exacty match of the UserID field
- UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3,oneof"`
-}
-
-type Identity_AWSIdentity_UserIdPattern struct {
- // Regular expression for UserId field
- UserIdPattern string `protobuf:"bytes,6,opt,name=user_id_pattern,json=userIdPattern,proto3,oneof"`
-}
-
-func (*Identity_AWSIdentity_UserId) isIdentity_AWSIdentity_AwsUserId() {}
-
-func (*Identity_AWSIdentity_UserIdPattern) isIdentity_AWSIdentity_AwsUserId() {}
-
-var File_identity_platform_proto protoreflect.FileDescriptor
-
-var file_identity_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xba, 0x0b, 0x0a, 0x08, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
- 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
- 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x63, 0x6c, 0x61,
- 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x0a,
- 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x69, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x74,
- 0x61, 0x74, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x69, 0x63, 0x12, 0x58, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72,
- 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50,
- 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x0c,
- 0x61, 0x77, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x77, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x1a, 0xad, 0x04, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
- 0x18, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x69, 0x73, 0x73,
- 0x75, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65,
- 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29,
- 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1c, 0x0a, 0x08, 0x61, 0x75, 0x64,
- 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x61,
- 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x10, 0x61, 0x75, 0x64, 0x69, 0x65,
- 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x02, 0x52, 0x0f, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x07,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49,
- 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
- 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f,
- 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x6c, 0x61,
- 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x1a, 0x39,
- 0x0a, 0x0b, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x61,
- 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x69,
- 0x73, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x75, 0x64,
- 0x1a, 0x9b, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12,
- 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
- 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4b, 0x65,
- 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xc4,
- 0x01, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f,
- 0x0a, 0x0b, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
- 0x12, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03,
- 0x61, 0x72, 0x6e, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65,
- 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x6e, 0x50,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x19, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
- 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x61, 0x74,
- 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x75, 0x73,
- 0x65, 0x72, 0x49, 0x64, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x61,
- 0x77, 0x73, 0x5f, 0x61, 0x72, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x68, 0x69, 0x70, 0x22, 0x7b, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49,
- 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23,
- 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
- 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x0c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5c, 0x0a, 0x0e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x4c, 0x6f,
- 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69,
- 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73,
- 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2a, 0x4f, 0x0a,
- 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61,
- 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c,
- 0x0a, 0x08, 0x43, 0x4f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08,
- 0x49, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41,
- 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x45, 0x52, 0x10, 0x03, 0x32, 0xe9,
- 0x06, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0xd7, 0x01,
- 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x2d, 0x3a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x21, 0x2f,
- 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65,
- 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x85, 0x07, 0xc2, 0xf0, 0x8e, 0xfc,
- 0x0b, 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xbc, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f,
- 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x86, 0x07, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
- 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x02, 0x87, 0x07, 0x10, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x06, 0x4c, 0x6f,
- 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4c,
- 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22,
- 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b,
- 0x75, 0x70, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0x12, 0xbb, 0x01, 0x0a,
- 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
- 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x88, 0x07, 0xc2,
- 0xf0, 0x8e, 0xfc, 0x0b, 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6c, 0x0a, 0x22, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31,
- 0x42, 0x1a, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_identity_platform_proto_rawDescOnce sync.Once
- file_identity_platform_proto_rawDescData = file_identity_platform_proto_rawDesc
-)
-
-func file_identity_platform_proto_rawDescGZIP() []byte {
- file_identity_platform_proto_rawDescOnce.Do(func() {
- file_identity_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identity_platform_proto_rawDescData)
- })
- return file_identity_platform_proto_rawDescData
-}
-
-var file_identity_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_identity_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
-var file_identity_platform_proto_goTypes = []interface{}{
- (ServicePrincipal)(0), // 0: chainguard.platform.iam.ServicePrincipal
- (*Identity)(nil), // 1: chainguard.platform.iam.Identity
- (*CreateIdentityRequest)(nil), // 2: chainguard.platform.iam.CreateIdentityRequest
- (*DeleteIdentityRequest)(nil), // 3: chainguard.platform.iam.DeleteIdentityRequest
- (*IdentityList)(nil), // 4: chainguard.platform.iam.IdentityList
- (*IdentityFilter)(nil), // 5: chainguard.platform.iam.IdentityFilter
- (*LookupRequest)(nil), // 6: chainguard.platform.iam.LookupRequest
- (*Identity_ClaimMatch)(nil), // 7: chainguard.platform.iam.Identity.ClaimMatch
- (*Identity_StaticKeys)(nil), // 8: chainguard.platform.iam.Identity.StaticKeys
- (*Identity_AWSIdentity)(nil), // 9: chainguard.platform.iam.Identity.AWSIdentity
- nil, // 10: chainguard.platform.iam.Identity.ClaimMatch.ClaimsEntry
- nil, // 11: chainguard.platform.iam.Identity.ClaimMatch.ClaimPatternsEntry
- (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 13: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 14: google.protobuf.Empty
-}
-var file_identity_platform_proto_depIdxs = []int32{
- 12, // 0: chainguard.platform.iam.Identity.created_at:type_name -> google.protobuf.Timestamp
- 12, // 1: chainguard.platform.iam.Identity.updated_at:type_name -> google.protobuf.Timestamp
- 7, // 2: chainguard.platform.iam.Identity.claim_match:type_name -> chainguard.platform.iam.Identity.ClaimMatch
- 8, // 3: chainguard.platform.iam.Identity.static:type_name -> chainguard.platform.iam.Identity.StaticKeys
- 0, // 4: chainguard.platform.iam.Identity.service_principal:type_name -> chainguard.platform.iam.ServicePrincipal
- 9, // 5: chainguard.platform.iam.Identity.aws_identity:type_name -> chainguard.platform.iam.Identity.AWSIdentity
- 1, // 6: chainguard.platform.iam.CreateIdentityRequest.identity:type_name -> chainguard.platform.iam.Identity
- 1, // 7: chainguard.platform.iam.IdentityList.items:type_name -> chainguard.platform.iam.Identity
- 13, // 8: chainguard.platform.iam.IdentityFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 10, // 9: chainguard.platform.iam.Identity.ClaimMatch.claims:type_name -> chainguard.platform.iam.Identity.ClaimMatch.ClaimsEntry
- 11, // 10: chainguard.platform.iam.Identity.ClaimMatch.claim_patterns:type_name -> chainguard.platform.iam.Identity.ClaimMatch.ClaimPatternsEntry
- 12, // 11: chainguard.platform.iam.Identity.StaticKeys.expiration:type_name -> google.protobuf.Timestamp
- 2, // 12: chainguard.platform.iam.Identities.Create:input_type -> chainguard.platform.iam.CreateIdentityRequest
- 1, // 13: chainguard.platform.iam.Identities.Update:input_type -> chainguard.platform.iam.Identity
- 5, // 14: chainguard.platform.iam.Identities.List:input_type -> chainguard.platform.iam.IdentityFilter
- 6, // 15: chainguard.platform.iam.Identities.Lookup:input_type -> chainguard.platform.iam.LookupRequest
- 3, // 16: chainguard.platform.iam.Identities.Delete:input_type -> chainguard.platform.iam.DeleteIdentityRequest
- 1, // 17: chainguard.platform.iam.Identities.Create:output_type -> chainguard.platform.iam.Identity
- 1, // 18: chainguard.platform.iam.Identities.Update:output_type -> chainguard.platform.iam.Identity
- 4, // 19: chainguard.platform.iam.Identities.List:output_type -> chainguard.platform.iam.IdentityList
- 1, // 20: chainguard.platform.iam.Identities.Lookup:output_type -> chainguard.platform.iam.Identity
- 14, // 21: chainguard.platform.iam.Identities.Delete:output_type -> google.protobuf.Empty
- 17, // [17:22] is the sub-list for method output_type
- 12, // [12:17] is the sub-list for method input_type
- 12, // [12:12] is the sub-list for extension type_name
- 12, // [12:12] is the sub-list for extension extendee
- 0, // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_identity_platform_proto_init() }
-func file_identity_platform_proto_init() {
- if File_identity_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_identity_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateIdentityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteIdentityRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity_ClaimMatch); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity_StaticKeys); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Identity_AWSIdentity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_identity_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Identity_ClaimMatch_)(nil),
- (*Identity_Static)(nil),
- (*Identity_ServicePrincipal)(nil),
- (*Identity_AwsIdentity)(nil),
- }
- file_identity_platform_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*Identity_ClaimMatch_Issuer)(nil),
- (*Identity_ClaimMatch_IssuerPattern)(nil),
- (*Identity_ClaimMatch_Subject)(nil),
- (*Identity_ClaimMatch_SubjectPattern)(nil),
- (*Identity_ClaimMatch_Audience)(nil),
- (*Identity_ClaimMatch_AudiencePattern)(nil),
- }
- file_identity_platform_proto_msgTypes[8].OneofWrappers = []interface{}{
- (*Identity_AWSIdentity_Arn)(nil),
- (*Identity_AWSIdentity_ArnPattern)(nil),
- (*Identity_AWSIdentity_UserId)(nil),
- (*Identity_AWSIdentity_UserIdPattern)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_identity_platform_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 11,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_identity_platform_proto_goTypes,
- DependencyIndexes: file_identity_platform_proto_depIdxs,
- EnumInfos: file_identity_platform_proto_enumTypes,
- MessageInfos: file_identity_platform_proto_msgTypes,
- }.Build()
- File_identity_platform_proto = out.File
- file_identity_platform_proto_rawDesc = nil
- file_identity_platform_proto_goTypes = nil
- file_identity_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/identity.platform.pb.gw.go b/proto/platform/iam/v1/identity.platform.pb.gw.go
deleted file mode 100644
index 903a93bf..00000000
--- a/proto/platform/iam/v1/identity.platform.pb.gw.go
+++ /dev/null
@@ -1,586 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: identity.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateIdentityRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Identity); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateIdentityRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Identity); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Identities_Update_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Identity
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_Update_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Identity
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Identities_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Identities_List_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_List_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Identities_Lookup_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Identities_Lookup_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq LookupRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_Lookup_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Lookup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_Lookup_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq LookupRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_Lookup_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Lookup(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Identities_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteIdentityRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Identities_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteIdentityRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterIdentitiesHandlerServer registers the http handlers for service Identities to "mux".
-// UnaryRPC :call IdentitiesServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentitiesHandlerFromEndpoint instead.
-func RegisterIdentitiesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentitiesServer) error {
-
- mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Identities_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Update", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Identities_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/List", runtime.WithHTTPPathPattern("/iam/v1/identities"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Identities_Lookup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Lookup", runtime.WithHTTPPathPattern("/iam/v1/identities/lookup"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_Lookup_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Lookup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Identities_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Delete", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Identities_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterIdentitiesHandlerFromEndpoint is same as RegisterIdentitiesHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterIdentitiesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterIdentitiesHandler(ctx, mux, conn)
-}
-
-// RegisterIdentitiesHandler registers the http handlers for service Identities to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterIdentitiesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterIdentitiesHandlerClient(ctx, mux, NewIdentitiesClient(conn))
-}
-
-// RegisterIdentitiesHandlerClient registers the http handlers for service Identities
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentitiesClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentitiesClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "IdentitiesClient" to call the correct interceptors.
-func RegisterIdentitiesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentitiesClient) error {
-
- mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Identities_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Update", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Identities_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/List", runtime.WithHTTPPathPattern("/iam/v1/identities"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Identities_Lookup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Lookup", runtime.WithHTTPPathPattern("/iam/v1/identities/lookup"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_Lookup_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Lookup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Identities_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Delete", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Identities_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Identities_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Identities_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "parent_id"}, ""))
-
- pattern_Identities_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "id"}, ""))
-
- pattern_Identities_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identities"}, ""))
-
- pattern_Identities_Lookup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"iam", "v1", "identities", "lookup"}, ""))
-
- pattern_Identities_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "id"}, ""))
-)
-
-var (
- forward_Identities_Create_0 = runtime.ForwardResponseMessage
-
- forward_Identities_Update_0 = runtime.ForwardResponseMessage
-
- forward_Identities_List_0 = runtime.ForwardResponseMessage
-
- forward_Identities_Lookup_0 = runtime.ForwardResponseMessage
-
- forward_Identities_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/identity.platform.proto b/proto/platform/iam/v1/identity.platform.proto
deleted file mode 100644
index 48dfbeef..00000000
--- a/proto/platform/iam/v1/identity.platform.proto
+++ /dev/null
@@ -1,251 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMIdentitiesProto";
-
-package chainguard.platform.iam;
-
-import "google/protobuf/timestamp.proto";
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Identities {
- rpc Create(CreateIdentityRequest) returns (Identity) {
- option (google.api.http) = {
- post: "/iam/v1/identities/{parent_id=**}"
- body: "identity"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(Identity) returns (Identity) {
- option (google.api.http) = {
- put: "/iam/v1/identities/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(IdentityFilter) returns (IdentityList) {
- option (google.api.http) = {
- get: "/iam/v1/identities"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Lookup(LookupRequest) returns (Identity) {
- option (google.api.http) = {
- get: "/iam/v1/identities/lookup"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteIdentityRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/identities/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-enum ServicePrincipal {
- UNKNOWN = 0;
-
- COSIGNED = 1;
- INGESTER = 2;
- CATALOG_SYNCER = 3;
-}
-
-message Identity {
- // id is unique identifier of this specific identity.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
- // name, human readable name of identity.
- string name = 2;
- // description, human readable of identity.
- string description = 3;
- // created_at is the timestamp for when the identity was created.
- google.protobuf.Timestamp created_at = 4;
- // updated_at is the timestamp for when the identity was last updated.
- google.protobuf.Timestamp updated_at = 5;
-
- // relationship is used to describe how this identity relates to
- // identities coming from 3rd party Identity Providers (IdPs)
- oneof relationship {
- // claim_match checks the third party IdP token's claims against one
- // or more configured patterns.
- ClaimMatch claim_match = 10;
-
- // static is equivalent to literal, but instead of discovering the
- // IdP's verification keys we verify the identity using pre-registered
- // verification keys. This is intended for use with identities from
- // providers without an "online" issuer (network accessible to our IdP),
- // such as a KinD/minikube cluster.
- // NOTE: because this path does not have a mechanism for key rotation
- // the identity will expire, with a maximum lifetime of 30d.
- StaticKeys static = 11;
-
- // service_principal is the name of the Chainguard service that is
- // allowed to assume this identity. These names correlate with the
- // service names used in impersonation with account associations.
- ServicePrincipal service_principal = 12;
-
- // aws_identity matches AWS IAM users and roles to an identity
- AWSIdentity aws_identity = 13;
- }
-
- message ClaimMatch {
- // Required, matches the `iss` claim.
- oneof iss {
- // issuer of the OIDC ID tokens issued for this identity.
- string issuer = 1;
- // issuer_pattern is a regular expression for matching the
- // token's issuer claim.
- string issuer_pattern = 2;
- }
-
- // Required, matches the `sub` claim.
- oneof sub {
- // subject of OIDC ID tokens issued for this identity.
- string subject = 3;
-
- // subject_pattern is a regular expression for matching the
- // token's subject claim.
- string subject_pattern = 4;
- }
-
- // Optional, matches the `aud` claim.
- // When unspecified, this defaults to the hostname of the SaaS
- // environment's issuer.
- oneof aud {
- // audience of OIDC ID tokens issued for this identity.
- string audience = 5;
-
- // audience_pattern is a regular expression for matching the
- // token's audience claim.
- string audience_pattern = 6;
- }
-
- // claims is a mapping from the name of a custom claim
- // to a literal matching that claim's value.
- map claims = 7;
-
- // claim_patterns is a mapping from the name of a custom claim
- // to a regular expression for matching that claim's value.
- map claim_patterns = 8;
- }
-
- message StaticKeys {
- // issuer of the OIDC ID tokens issued for this identity.
- // Matches the `iss` claim.
- string issuer = 1;
-
- // subject of OIDC ID tokens issued for this identity.
- // Matches the `sub` claim.
- string subject = 2;
-
- // issuer_keys is JWKS-formatted public keys for the issuer.
- // Required, otherwise use Literal.
- string issuer_keys = 4;
-
- // expiration is the time when the issuer_keys will expire.
- // Defaults to / Maximum of 30 days after creation time.
- google.protobuf.Timestamp expiration = 5;
- }
-
- message AWSIdentity {
- // Required, matches the `Account` field in the GetCallerID AWS IAM
- // response
- string aws_account = 1;
-
- // Required, matches the `Arn` field in the GetCallerID AWS IAM response
- oneof aws_arn {
- // Exact match to Arn of AWS Identity
- string arn = 3;
-
- // Regular expression for matching Arn
- string arn_pattern = 4;
- }
-
- // Required, matches the `UserId` field of th GetCallerID AWS IAM response
- oneof aws_user_id {
- // Exacty match of the UserID field
- string user_id = 5;
-
- // Regular expression for UserId field
- string user_id_pattern = 6;
- }
- }
-}
-
-message CreateIdentityRequest {
- // parent_id, The Group UIDP path under which the new Identity resides.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
- // Identity to create.
- Identity identity = 2;
-}
-
-message DeleteIdentityRequest {
- // ID, UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message IdentityList {
- repeated Identity items = 1;
-}
-
-message IdentityFilter {
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // id is unique identifier to look up.
- string id = 2;
-}
-
-message LookupRequest {
- // issuer is the oidc issuer to look up.
- string issuer = 1;
-
- // subject is the subject to look up.
- string subject = 2;
-}
diff --git a/proto/platform/iam/v1/identity.platform_grpc.pb.go b/proto/platform/iam/v1/identity.platform_grpc.pb.go
deleted file mode 100644
index f509c4d3..00000000
--- a/proto/platform/iam/v1/identity.platform_grpc.pb.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: identity.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Identities_Create_FullMethodName = "/chainguard.platform.iam.Identities/Create"
- Identities_Update_FullMethodName = "/chainguard.platform.iam.Identities/Update"
- Identities_List_FullMethodName = "/chainguard.platform.iam.Identities/List"
- Identities_Lookup_FullMethodName = "/chainguard.platform.iam.Identities/Lookup"
- Identities_Delete_FullMethodName = "/chainguard.platform.iam.Identities/Delete"
-)
-
-// IdentitiesClient is the client API for Identities service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type IdentitiesClient interface {
- Create(ctx context.Context, in *CreateIdentityRequest, opts ...grpc.CallOption) (*Identity, error)
- Update(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error)
- List(ctx context.Context, in *IdentityFilter, opts ...grpc.CallOption) (*IdentityList, error)
- Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*Identity, error)
- Delete(ctx context.Context, in *DeleteIdentityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type identitiesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewIdentitiesClient(cc grpc.ClientConnInterface) IdentitiesClient {
- return &identitiesClient{cc}
-}
-
-func (c *identitiesClient) Create(ctx context.Context, in *CreateIdentityRequest, opts ...grpc.CallOption) (*Identity, error) {
- out := new(Identity)
- err := c.cc.Invoke(ctx, Identities_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identitiesClient) Update(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error) {
- out := new(Identity)
- err := c.cc.Invoke(ctx, Identities_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identitiesClient) List(ctx context.Context, in *IdentityFilter, opts ...grpc.CallOption) (*IdentityList, error) {
- out := new(IdentityList)
- err := c.cc.Invoke(ctx, Identities_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identitiesClient) Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*Identity, error) {
- out := new(Identity)
- err := c.cc.Invoke(ctx, Identities_Lookup_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identitiesClient) Delete(ctx context.Context, in *DeleteIdentityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Identities_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// IdentitiesServer is the server API for Identities service.
-// All implementations must embed UnimplementedIdentitiesServer
-// for forward compatibility
-type IdentitiesServer interface {
- Create(context.Context, *CreateIdentityRequest) (*Identity, error)
- Update(context.Context, *Identity) (*Identity, error)
- List(context.Context, *IdentityFilter) (*IdentityList, error)
- Lookup(context.Context, *LookupRequest) (*Identity, error)
- Delete(context.Context, *DeleteIdentityRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedIdentitiesServer()
-}
-
-// UnimplementedIdentitiesServer must be embedded to have forward compatible implementations.
-type UnimplementedIdentitiesServer struct {
-}
-
-func (UnimplementedIdentitiesServer) Create(context.Context, *CreateIdentityRequest) (*Identity, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedIdentitiesServer) Update(context.Context, *Identity) (*Identity, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedIdentitiesServer) List(context.Context, *IdentityFilter) (*IdentityList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedIdentitiesServer) Lookup(context.Context, *LookupRequest) (*Identity, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Lookup not implemented")
-}
-func (UnimplementedIdentitiesServer) Delete(context.Context, *DeleteIdentityRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedIdentitiesServer) mustEmbedUnimplementedIdentitiesServer() {}
-
-// UnsafeIdentitiesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to IdentitiesServer will
-// result in compilation errors.
-type UnsafeIdentitiesServer interface {
- mustEmbedUnimplementedIdentitiesServer()
-}
-
-func RegisterIdentitiesServer(s grpc.ServiceRegistrar, srv IdentitiesServer) {
- s.RegisterService(&Identities_ServiceDesc, srv)
-}
-
-func _Identities_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateIdentityRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).Create(ctx, req.(*CreateIdentityRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Identities_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Identity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).Update(ctx, req.(*Identity))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Identities_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(IdentityFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).List(ctx, req.(*IdentityFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Identities_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(LookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).Lookup(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_Lookup_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).Lookup(ctx, req.(*LookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Identities_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteIdentityRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentitiesServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Identities_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentitiesServer).Delete(ctx, req.(*DeleteIdentityRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Identities_ServiceDesc is the grpc.ServiceDesc for Identities service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Identities_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.Identities",
- HandlerType: (*IdentitiesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Identities_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _Identities_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _Identities_List_Handler,
- },
- {
- MethodName: "Lookup",
- Handler: _Identities_Lookup_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Identities_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "identity.platform.proto",
-}
diff --git a/proto/platform/iam/v1/identity_providers.platform.event.go b/proto/platform/iam/v1/identity_providers.platform.event.go
deleted file mode 100644
index 052684da..00000000
--- a/proto/platform/iam/v1/identity_providers.platform.event.go
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *IdentityProvider) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *IdentityProvider) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.CloudEventsRedact.
-func (x *IdentityProvider) CloudEventsRedact() interface{} {
- idp := &IdentityProvider{
- Id: x.Id,
- Name: x.Name,
- Description: x.Description,
- DefaultRole: x.DefaultRole,
- }
-
- switch cfg := x.Configuration.(type) {
- case *IdentityProvider_Oidc:
- // redact OIDC configuration
- idp.Configuration = &IdentityProvider_Oidc{
- Oidc: &IdentityProvider_OIDC{
- Issuer: cfg.Oidc.Issuer,
- ClientId: cfg.Oidc.ClientId,
- // ClientSecret is redacted.
- AdditionalScopes: cfg.Oidc.AdditionalScopes,
- },
- }
- default:
- // no redaction
- idp.Configuration = x.Configuration
- }
-
- return idp
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteIdentityProviderRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteIdentityProviderRequest) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.go b/proto/platform/iam/v1/identity_providers.platform.pb.go
deleted file mode 100644
index abed021a..00000000
--- a/proto/platform/iam/v1/identity_providers.platform.pb.go
+++ /dev/null
@@ -1,693 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: identity_providers.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type IdentityProvider struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is unique identifier of this specific identity provider
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // default_role is the UIDP of an optional default role
- // to grant users of this identity provider.
- DefaultRole string `protobuf:"bytes,4,opt,name=default_role,json=defaultRole,proto3" json:"default_role,omitempty"`
- // Types that are assignable to Configuration:
- //
- // *IdentityProvider_Oidc
- Configuration isIdentityProvider_Configuration `protobuf_oneof:"configuration"`
-}
-
-func (x *IdentityProvider) Reset() {
- *x = IdentityProvider{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityProvider) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityProvider) ProtoMessage() {}
-
-func (x *IdentityProvider) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityProvider.ProtoReflect.Descriptor instead.
-func (*IdentityProvider) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *IdentityProvider) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *IdentityProvider) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *IdentityProvider) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *IdentityProvider) GetDefaultRole() string {
- if x != nil {
- return x.DefaultRole
- }
- return ""
-}
-
-func (m *IdentityProvider) GetConfiguration() isIdentityProvider_Configuration {
- if m != nil {
- return m.Configuration
- }
- return nil
-}
-
-func (x *IdentityProvider) GetOidc() *IdentityProvider_OIDC {
- if x, ok := x.GetConfiguration().(*IdentityProvider_Oidc); ok {
- return x.Oidc
- }
- return nil
-}
-
-type isIdentityProvider_Configuration interface {
- isIdentityProvider_Configuration()
-}
-
-type IdentityProvider_Oidc struct {
- Oidc *IdentityProvider_OIDC `protobuf:"bytes,20,opt,name=oidc,proto3,oneof"`
-}
-
-func (*IdentityProvider_Oidc) isIdentityProvider_Configuration() {}
-
-type CreateIdentityProviderRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id is the exact UIDP of the IAM group to nest this identity provider under
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- IdentityProvider *IdentityProvider `protobuf:"bytes,2,opt,name=identity_provider,json=identityProvider,proto3" json:"identity_provider,omitempty"`
-}
-
-func (x *CreateIdentityProviderRequest) Reset() {
- *x = CreateIdentityProviderRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateIdentityProviderRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateIdentityProviderRequest) ProtoMessage() {}
-
-func (x *CreateIdentityProviderRequest) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateIdentityProviderRequest.ProtoReflect.Descriptor instead.
-func (*CreateIdentityProviderRequest) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CreateIdentityProviderRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateIdentityProviderRequest) GetIdentityProvider() *IdentityProvider {
- if x != nil {
- return x.IdentityProvider
- }
- return nil
-}
-
-type DeleteIdentityProviderRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the IdP
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteIdentityProviderRequest) Reset() {
- *x = DeleteIdentityProviderRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteIdentityProviderRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteIdentityProviderRequest) ProtoMessage() {}
-
-func (x *DeleteIdentityProviderRequest) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteIdentityProviderRequest.ProtoReflect.Descriptor instead.
-func (*DeleteIdentityProviderRequest) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *DeleteIdentityProviderRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type IdentityProviderFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Exact match on identity provider UIDP
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Exact match on identity provider name
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // uidp filers records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,3,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *IdentityProviderFilter) Reset() {
- *x = IdentityProviderFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityProviderFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityProviderFilter) ProtoMessage() {}
-
-func (x *IdentityProviderFilter) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityProviderFilter.ProtoReflect.Descriptor instead.
-func (*IdentityProviderFilter) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *IdentityProviderFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *IdentityProviderFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *IdentityProviderFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-type IdentityProviderList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*IdentityProvider `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *IdentityProviderList) Reset() {
- *x = IdentityProviderList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityProviderList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityProviderList) ProtoMessage() {}
-
-func (x *IdentityProviderList) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityProviderList.ProtoReflect.Descriptor instead.
-func (*IdentityProviderList) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *IdentityProviderList) GetItems() []*IdentityProvider {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type IdentityProvider_OIDC struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Issuer URL (e.g https://accounts.google.com)
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
- ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
- ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
- // Additional scopes to request for ID tokens
- AdditionalScopes []string `protobuf:"bytes,4,rep,name=additional_scopes,json=additionalScopes,proto3" json:"additional_scopes,omitempty"`
-}
-
-func (x *IdentityProvider_OIDC) Reset() {
- *x = IdentityProvider_OIDC{}
- if protoimpl.UnsafeEnabled {
- mi := &file_identity_providers_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *IdentityProvider_OIDC) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IdentityProvider_OIDC) ProtoMessage() {}
-
-func (x *IdentityProvider_OIDC) ProtoReflect() protoreflect.Message {
- mi := &file_identity_providers_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use IdentityProvider_OIDC.ProtoReflect.Descriptor instead.
-func (*IdentityProvider_OIDC) Descriptor() ([]byte, []int) {
- return file_identity_providers_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *IdentityProvider_OIDC) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *IdentityProvider_OIDC) GetClientId() string {
- if x != nil {
- return x.ClientId
- }
- return ""
-}
-
-func (x *IdentityProvider_OIDC) GetClientSecret() string {
- if x != nil {
- return x.ClientSecret
- }
- return ""
-}
-
-func (x *IdentityProvider_OIDC) GetAdditionalScopes() []string {
- if x != nil {
- return x.AdditionalScopes
- }
- return nil
-}
-
-var File_identity_providers_platform_proto protoreflect.FileDescriptor
-
-var file_identity_providers_platform_proto_rawDesc = []byte{
- 0x0a, 0x21, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
- 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69,
- 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72,
- 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
- 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61,
- 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x6f, 0x69, 0x64, 0x63, 0x18,
- 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
- 0x2e, 0x4f, 0x49, 0x44, 0x43, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x69, 0x64, 0x63, 0x1a, 0x8d, 0x01,
- 0x0a, 0x04, 0x4f, 0x49, 0x44, 0x43, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x1b,
- 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63,
- 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
- 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x64,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x0f, 0x0a,
- 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c,
- 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x56, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x10, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x37, 0x0a,
- 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
- 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x78, 0x0a, 0x16, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
- 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70,
- 0x22, 0x57, 0x0a, 0x14, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
- 0x65, 0x72, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0xed, 0x06, 0x0a, 0x11, 0x49, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12,
- 0x84, 0x02, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74,
- 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x96, 0x01,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x28, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
- 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x95, 0x0a, 0x91,
- 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
- 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a,
- 0x01, 0x2a, 0x1a, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x96,
- 0x0a, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x97, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x1a, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73,
- 0x74, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
- 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x97, 0x0a,
- 0x10, 0x01, 0x12, 0xd4, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x36, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7a, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69,
- 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73,
- 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0x98, 0x0a, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
- 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x72, 0x0a, 0x22, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42,
- 0x20, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x49, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_identity_providers_platform_proto_rawDescOnce sync.Once
- file_identity_providers_platform_proto_rawDescData = file_identity_providers_platform_proto_rawDesc
-)
-
-func file_identity_providers_platform_proto_rawDescGZIP() []byte {
- file_identity_providers_platform_proto_rawDescOnce.Do(func() {
- file_identity_providers_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identity_providers_platform_proto_rawDescData)
- })
- return file_identity_providers_platform_proto_rawDescData
-}
-
-var file_identity_providers_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_identity_providers_platform_proto_goTypes = []interface{}{
- (*IdentityProvider)(nil), // 0: chainguard.platform.iam.IdentityProvider
- (*CreateIdentityProviderRequest)(nil), // 1: chainguard.platform.iam.CreateIdentityProviderRequest
- (*DeleteIdentityProviderRequest)(nil), // 2: chainguard.platform.iam.DeleteIdentityProviderRequest
- (*IdentityProviderFilter)(nil), // 3: chainguard.platform.iam.IdentityProviderFilter
- (*IdentityProviderList)(nil), // 4: chainguard.platform.iam.IdentityProviderList
- (*IdentityProvider_OIDC)(nil), // 5: chainguard.platform.iam.IdentityProvider.OIDC
- (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
-}
-var file_identity_providers_platform_proto_depIdxs = []int32{
- 5, // 0: chainguard.platform.iam.IdentityProvider.oidc:type_name -> chainguard.platform.iam.IdentityProvider.OIDC
- 0, // 1: chainguard.platform.iam.CreateIdentityProviderRequest.identity_provider:type_name -> chainguard.platform.iam.IdentityProvider
- 6, // 2: chainguard.platform.iam.IdentityProviderFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 3: chainguard.platform.iam.IdentityProviderList.items:type_name -> chainguard.platform.iam.IdentityProvider
- 1, // 4: chainguard.platform.iam.IdentityProviders.Create:input_type -> chainguard.platform.iam.CreateIdentityProviderRequest
- 0, // 5: chainguard.platform.iam.IdentityProviders.Update:input_type -> chainguard.platform.iam.IdentityProvider
- 3, // 6: chainguard.platform.iam.IdentityProviders.List:input_type -> chainguard.platform.iam.IdentityProviderFilter
- 2, // 7: chainguard.platform.iam.IdentityProviders.Delete:input_type -> chainguard.platform.iam.DeleteIdentityProviderRequest
- 0, // 8: chainguard.platform.iam.IdentityProviders.Create:output_type -> chainguard.platform.iam.IdentityProvider
- 0, // 9: chainguard.platform.iam.IdentityProviders.Update:output_type -> chainguard.platform.iam.IdentityProvider
- 4, // 10: chainguard.platform.iam.IdentityProviders.List:output_type -> chainguard.platform.iam.IdentityProviderList
- 7, // 11: chainguard.platform.iam.IdentityProviders.Delete:output_type -> google.protobuf.Empty
- 8, // [8:12] is the sub-list for method output_type
- 4, // [4:8] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_identity_providers_platform_proto_init() }
-func file_identity_providers_platform_proto_init() {
- if File_identity_providers_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_identity_providers_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityProvider); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_providers_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateIdentityProviderRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_providers_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteIdentityProviderRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_providers_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityProviderFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_providers_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityProviderList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_identity_providers_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IdentityProvider_OIDC); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_identity_providers_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*IdentityProvider_Oidc)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_identity_providers_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_identity_providers_platform_proto_goTypes,
- DependencyIndexes: file_identity_providers_platform_proto_depIdxs,
- MessageInfos: file_identity_providers_platform_proto_msgTypes,
- }.Build()
- File_identity_providers_platform_proto = out.File
- file_identity_providers_platform_proto_rawDesc = nil
- file_identity_providers_platform_proto_goTypes = nil
- file_identity_providers_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.gw.go b/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
deleted file mode 100644
index fdfb2ada..00000000
--- a/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
+++ /dev/null
@@ -1,501 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: identity_providers.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_IdentityProviders_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateIdentityProviderRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.IdentityProvider); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_IdentityProviders_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateIdentityProviderRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.IdentityProvider); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_IdentityProviders_Update_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityProvider
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_IdentityProviders_Update_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityProvider
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_IdentityProviders_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_IdentityProviders_List_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityProviderFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_IdentityProviders_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_IdentityProviders_List_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq IdentityProviderFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_IdentityProviders_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_IdentityProviders_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteIdentityProviderRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_IdentityProviders_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteIdentityProviderRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterIdentityProvidersHandlerServer registers the http handlers for service IdentityProviders to "mux".
-// UnaryRPC :call IdentityProvidersServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentityProvidersHandlerFromEndpoint instead.
-func RegisterIdentityProvidersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentityProvidersServer) error {
-
- mux.Handle("POST", pattern_IdentityProviders_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Create", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_IdentityProviders_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_IdentityProviders_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Update", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_IdentityProviders_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_IdentityProviders_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/List", runtime.WithHTTPPathPattern("/iam/v1/identityProviders"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_IdentityProviders_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_IdentityProviders_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Delete", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_IdentityProviders_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterIdentityProvidersHandlerFromEndpoint is same as RegisterIdentityProvidersHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterIdentityProvidersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterIdentityProvidersHandler(ctx, mux, conn)
-}
-
-// RegisterIdentityProvidersHandler registers the http handlers for service IdentityProviders to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterIdentityProvidersHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterIdentityProvidersHandlerClient(ctx, mux, NewIdentityProvidersClient(conn))
-}
-
-// RegisterIdentityProvidersHandlerClient registers the http handlers for service IdentityProviders
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentityProvidersClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentityProvidersClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "IdentityProvidersClient" to call the correct interceptors.
-func RegisterIdentityProvidersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentityProvidersClient) error {
-
- mux.Handle("POST", pattern_IdentityProviders_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Create", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_IdentityProviders_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_IdentityProviders_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Update", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_IdentityProviders_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_IdentityProviders_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/List", runtime.WithHTTPPathPattern("/iam/v1/identityProviders"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_IdentityProviders_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_IdentityProviders_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Delete", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_IdentityProviders_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_IdentityProviders_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_IdentityProviders_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "parent_id"}, ""))
-
- pattern_IdentityProviders_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "id"}, ""))
-
- pattern_IdentityProviders_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identityProviders"}, ""))
-
- pattern_IdentityProviders_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "id"}, ""))
-)
-
-var (
- forward_IdentityProviders_Create_0 = runtime.ForwardResponseMessage
-
- forward_IdentityProviders_Update_0 = runtime.ForwardResponseMessage
-
- forward_IdentityProviders_List_0 = runtime.ForwardResponseMessage
-
- forward_IdentityProviders_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/identity_providers.platform.proto b/proto/platform/iam/v1/identity_providers.platform.proto
deleted file mode 100644
index d74e65a7..00000000
--- a/proto/platform/iam/v1/identity_providers.platform.proto
+++ /dev/null
@@ -1,149 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMIdentityProviderProto";
-
-package chainguard.platform.iam;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service IdentityProviders {
- rpc Create(CreateIdentityProviderRequest) returns (IdentityProvider) {
- option (google.api.http) = {
- post: "/iam/v1/identityProviders/{parent_id=**}"
- body: "identity_provider"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- CAP_IAM_IDENTITY_PROVIDERS_CREATE,
- // Creating an IdentityProvider provides to option of choosing
- // a default role, which makes it effectively a RoleBinding
- // promise, so check that the caller has permission to
- // create RoleBindings as well.
- CAP_IAM_ROLE_BINDINGS_CREATE
- ]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity_providers.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(IdentityProvider) returns (IdentityProvider) {
- option (google.api.http) = {
- put: "/iam/v1/identityProviders/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- CAP_IAM_IDENTITY_PROVIDERS_UPDATE,
- // Updating an IdentityProvider provides to option of choosing
- // a default role, which makes it effectively a RoleBinding
- // promise, so check that the caller has permission to
- // create RoleBindings as well.
- CAP_IAM_ROLE_BINDINGS_CREATE
- ]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity_providers.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(IdentityProviderFilter) returns (IdentityProviderList) {
- option (google.api.http) = {
- get: "/iam/v1/identityProviders"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_PROVIDERS_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteIdentityProviderRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/identityProviders/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_IDENTITY_PROVIDERS_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.identity_providers.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
-}
-
-message IdentityProvider {
- // id is unique identifier of this specific identity provider
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- string name = 2;
- string description = 3;
-
- // default_role is the UIDP of an optional default role
- // to grant users of this identity provider.
- string default_role = 4;
-
- oneof configuration {
- OIDC oidc = 20;
-
- // TODO: SAML, LDAP etc;
- }
-
- message OIDC {
- // Issuer URL (e.g https://accounts.google.com)
- string issuer = 1;
-
- string client_id = 2;
- string client_secret = 3;
-
- // Additional scopes to request for ID tokens
- repeated string additional_scopes = 4;
- }
-}
-
-message CreateIdentityProviderRequest {
- // parent_id is the exact UIDP of the IAM group to nest this identity provider under
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- IdentityProvider identity_provider = 2;
-}
-
-message DeleteIdentityProviderRequest {
- // id is the exact UIDP of the IdP
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message IdentityProviderFilter {
- // Exact match on identity provider UIDP
- string id = 1;
-
- // Exact match on identity provider name
- string name = 2;
-
- // uidp filers records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 3;
-}
-
-message IdentityProviderList {
- repeated IdentityProvider items = 1;
-}
diff --git a/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go b/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
deleted file mode 100644
index 60b20f6c..00000000
--- a/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: identity_providers.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- IdentityProviders_Create_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Create"
- IdentityProviders_Update_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Update"
- IdentityProviders_List_FullMethodName = "/chainguard.platform.iam.IdentityProviders/List"
- IdentityProviders_Delete_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Delete"
-)
-
-// IdentityProvidersClient is the client API for IdentityProviders service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type IdentityProvidersClient interface {
- Create(ctx context.Context, in *CreateIdentityProviderRequest, opts ...grpc.CallOption) (*IdentityProvider, error)
- Update(ctx context.Context, in *IdentityProvider, opts ...grpc.CallOption) (*IdentityProvider, error)
- List(ctx context.Context, in *IdentityProviderFilter, opts ...grpc.CallOption) (*IdentityProviderList, error)
- Delete(ctx context.Context, in *DeleteIdentityProviderRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type identityProvidersClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewIdentityProvidersClient(cc grpc.ClientConnInterface) IdentityProvidersClient {
- return &identityProvidersClient{cc}
-}
-
-func (c *identityProvidersClient) Create(ctx context.Context, in *CreateIdentityProviderRequest, opts ...grpc.CallOption) (*IdentityProvider, error) {
- out := new(IdentityProvider)
- err := c.cc.Invoke(ctx, IdentityProviders_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identityProvidersClient) Update(ctx context.Context, in *IdentityProvider, opts ...grpc.CallOption) (*IdentityProvider, error) {
- out := new(IdentityProvider)
- err := c.cc.Invoke(ctx, IdentityProviders_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identityProvidersClient) List(ctx context.Context, in *IdentityProviderFilter, opts ...grpc.CallOption) (*IdentityProviderList, error) {
- out := new(IdentityProviderList)
- err := c.cc.Invoke(ctx, IdentityProviders_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *identityProvidersClient) Delete(ctx context.Context, in *DeleteIdentityProviderRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, IdentityProviders_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// IdentityProvidersServer is the server API for IdentityProviders service.
-// All implementations must embed UnimplementedIdentityProvidersServer
-// for forward compatibility
-type IdentityProvidersServer interface {
- Create(context.Context, *CreateIdentityProviderRequest) (*IdentityProvider, error)
- Update(context.Context, *IdentityProvider) (*IdentityProvider, error)
- List(context.Context, *IdentityProviderFilter) (*IdentityProviderList, error)
- Delete(context.Context, *DeleteIdentityProviderRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedIdentityProvidersServer()
-}
-
-// UnimplementedIdentityProvidersServer must be embedded to have forward compatible implementations.
-type UnimplementedIdentityProvidersServer struct {
-}
-
-func (UnimplementedIdentityProvidersServer) Create(context.Context, *CreateIdentityProviderRequest) (*IdentityProvider, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedIdentityProvidersServer) Update(context.Context, *IdentityProvider) (*IdentityProvider, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedIdentityProvidersServer) List(context.Context, *IdentityProviderFilter) (*IdentityProviderList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedIdentityProvidersServer) Delete(context.Context, *DeleteIdentityProviderRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedIdentityProvidersServer) mustEmbedUnimplementedIdentityProvidersServer() {}
-
-// UnsafeIdentityProvidersServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to IdentityProvidersServer will
-// result in compilation errors.
-type UnsafeIdentityProvidersServer interface {
- mustEmbedUnimplementedIdentityProvidersServer()
-}
-
-func RegisterIdentityProvidersServer(s grpc.ServiceRegistrar, srv IdentityProvidersServer) {
- s.RegisterService(&IdentityProviders_ServiceDesc, srv)
-}
-
-func _IdentityProviders_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateIdentityProviderRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentityProvidersServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: IdentityProviders_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityProvidersServer).Create(ctx, req.(*CreateIdentityProviderRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _IdentityProviders_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(IdentityProvider)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentityProvidersServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: IdentityProviders_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityProvidersServer).Update(ctx, req.(*IdentityProvider))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _IdentityProviders_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(IdentityProviderFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentityProvidersServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: IdentityProviders_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityProvidersServer).List(ctx, req.(*IdentityProviderFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _IdentityProviders_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteIdentityProviderRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(IdentityProvidersServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: IdentityProviders_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityProvidersServer).Delete(ctx, req.(*DeleteIdentityProviderRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// IdentityProviders_ServiceDesc is the grpc.ServiceDesc for IdentityProviders service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var IdentityProviders_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.IdentityProviders",
- HandlerType: (*IdentityProvidersServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _IdentityProviders_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _IdentityProviders_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _IdentityProviders_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _IdentityProviders_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "identity_providers.platform.proto",
-}
diff --git a/proto/platform/iam/v1/role.platform.event.go b/proto/platform/iam/v1/role.platform.event.go
deleted file mode 100644
index 489e240f..00000000
--- a/proto/platform/iam/v1/role.platform.event.go
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import "chainguard.dev/sdk/uidp"
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Role) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Role) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/role.platform.pb.go b/proto/platform/iam/v1/role.platform.pb.go
deleted file mode 100644
index 816400c0..00000000
--- a/proto/platform/iam/v1/role.platform.pb.go
+++ /dev/null
@@ -1,540 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: role.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Role struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Group path under which this Role resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human readable name of group.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human readable description of group.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // capabilities, human readable list of capabilities supported by the group.
- Capabilities []string `protobuf:"bytes,4,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
-}
-
-func (x *Role) Reset() {
- *x = Role{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Role) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Role) ProtoMessage() {}
-
-func (x *Role) ProtoReflect() protoreflect.Message {
- mi := &file_role_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Role.ProtoReflect.Descriptor instead.
-func (*Role) Descriptor() ([]byte, []int) {
- return file_role_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Role) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Role) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Role) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Role) GetCapabilities() []string {
- if x != nil {
- return x.Capabilities
- }
- return nil
-}
-
-type RoleList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Role `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RoleList) Reset() {
- *x = RoleList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleList) ProtoMessage() {}
-
-func (x *RoleList) ProtoReflect() protoreflect.Message {
- mi := &file_role_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleList.ProtoReflect.Descriptor instead.
-func (*RoleList) Descriptor() ([]byte, []int) {
- return file_role_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RoleList) GetItems() []*Role {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type RoleFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name is the exact name of the record
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // parent is the exact UIDP of the parent, or / for root
- Parent string `protobuf:"bytes,3,opt,name=parent,proto3" json:"parent,omitempty"`
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,4,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *RoleFilter) Reset() {
- *x = RoleFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleFilter) ProtoMessage() {}
-
-func (x *RoleFilter) ProtoReflect() protoreflect.Message {
- mi := &file_role_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleFilter.ProtoReflect.Descriptor instead.
-func (*RoleFilter) Descriptor() ([]byte, []int) {
- return file_role_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *RoleFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RoleFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *RoleFilter) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *RoleFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-type CreateRoleRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group UIDP path under which the new Role resides.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Role to create.
- Role *Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
-}
-
-func (x *CreateRoleRequest) Reset() {
- *x = CreateRoleRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateRoleRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateRoleRequest) ProtoMessage() {}
-
-func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_role_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead.
-func (*CreateRoleRequest) Descriptor() ([]byte, []int) {
- return file_role_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CreateRoleRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateRoleRequest) GetRole() *Role {
- if x != nil {
- return x.Role
- }
- return nil
-}
-
-type DeleteRoleRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteRoleRequest) Reset() {
- *x = DeleteRoleRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteRoleRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteRoleRequest) ProtoMessage() {}
-
-func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message {
- mi := &file_role_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead.
-func (*DeleteRoleRequest) Descriptor() ([]byte, []int) {
- return file_role_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *DeleteRoleRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-var File_role_platform_proto protoreflect.FileDescriptor
-
-var file_role_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d,
- 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x78, 0x0a, 0x04, 0x52, 0x6f, 0x6c,
- 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
- 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x6b, 0x0a, 0x11, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
- 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
- 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xf9, 0x03, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12,
- 0x8b, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x04, 0x72,
- 0x6f, 0x6c, 0x65, 0x22, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c,
- 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xad, 0x02, 0x12, 0x74, 0x0a,
- 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a,
- 0x1a, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f,
- 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
- 0x02, 0xae, 0x02, 0x12, 0x73, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08,
- 0x12, 0x06, 0x0a, 0x02, 0xaf, 0x02, 0x10, 0x01, 0x12, 0x77, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xb0,
- 0x02, 0x42, 0x66, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
- 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f,
- 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
-}
-
-var (
- file_role_platform_proto_rawDescOnce sync.Once
- file_role_platform_proto_rawDescData = file_role_platform_proto_rawDesc
-)
-
-func file_role_platform_proto_rawDescGZIP() []byte {
- file_role_platform_proto_rawDescOnce.Do(func() {
- file_role_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_role_platform_proto_rawDescData)
- })
- return file_role_platform_proto_rawDescData
-}
-
-var file_role_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_role_platform_proto_goTypes = []interface{}{
- (*Role)(nil), // 0: chainguard.platform.iam.Role
- (*RoleList)(nil), // 1: chainguard.platform.iam.RoleList
- (*RoleFilter)(nil), // 2: chainguard.platform.iam.RoleFilter
- (*CreateRoleRequest)(nil), // 3: chainguard.platform.iam.CreateRoleRequest
- (*DeleteRoleRequest)(nil), // 4: chainguard.platform.iam.DeleteRoleRequest
- (*v1.UIDPFilter)(nil), // 5: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 6: google.protobuf.Empty
-}
-var file_role_platform_proto_depIdxs = []int32{
- 0, // 0: chainguard.platform.iam.RoleList.items:type_name -> chainguard.platform.iam.Role
- 5, // 1: chainguard.platform.iam.RoleFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 2: chainguard.platform.iam.CreateRoleRequest.role:type_name -> chainguard.platform.iam.Role
- 3, // 3: chainguard.platform.iam.Roles.Create:input_type -> chainguard.platform.iam.CreateRoleRequest
- 0, // 4: chainguard.platform.iam.Roles.Update:input_type -> chainguard.platform.iam.Role
- 2, // 5: chainguard.platform.iam.Roles.List:input_type -> chainguard.platform.iam.RoleFilter
- 4, // 6: chainguard.platform.iam.Roles.Delete:input_type -> chainguard.platform.iam.DeleteRoleRequest
- 0, // 7: chainguard.platform.iam.Roles.Create:output_type -> chainguard.platform.iam.Role
- 0, // 8: chainguard.platform.iam.Roles.Update:output_type -> chainguard.platform.iam.Role
- 1, // 9: chainguard.platform.iam.Roles.List:output_type -> chainguard.platform.iam.RoleList
- 6, // 10: chainguard.platform.iam.Roles.Delete:output_type -> google.protobuf.Empty
- 7, // [7:11] is the sub-list for method output_type
- 3, // [3:7] 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_role_platform_proto_init() }
-func file_role_platform_proto_init() {
- if File_role_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_role_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Role); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateRoleRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteRoleRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_role_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 5,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_role_platform_proto_goTypes,
- DependencyIndexes: file_role_platform_proto_depIdxs,
- MessageInfos: file_role_platform_proto_msgTypes,
- }.Build()
- File_role_platform_proto = out.File
- file_role_platform_proto_rawDesc = nil
- file_role_platform_proto_goTypes = nil
- file_role_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/role.platform.pb.gw.go b/proto/platform/iam/v1/role.platform.pb.gw.go
deleted file mode 100644
index dcc83137..00000000
--- a/proto/platform/iam/v1/role.platform.pb.gw.go
+++ /dev/null
@@ -1,501 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: role.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Roles_Create_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRoleRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Role); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Roles_Create_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRoleRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Role); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Roles_Update_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Role
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Roles_Update_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Role
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Roles_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Roles_List_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Roles_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Roles_List_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Roles_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Roles_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRoleRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Roles_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRoleRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterRolesHandlerServer registers the http handlers for service Roles to "mux".
-// UnaryRPC :call RolesServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRolesHandlerFromEndpoint instead.
-func RegisterRolesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RolesServer) error {
-
- mux.Handle("POST", pattern_Roles_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Create", runtime.WithHTTPPathPattern("/iam/v1/roles/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Roles_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Roles_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Update", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Roles_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Roles_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/List", runtime.WithHTTPPathPattern("/iam/v1/roles"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Roles_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Roles_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Delete", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Roles_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterRolesHandlerFromEndpoint is same as RegisterRolesHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterRolesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterRolesHandler(ctx, mux, conn)
-}
-
-// RegisterRolesHandler registers the http handlers for service Roles to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterRolesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterRolesHandlerClient(ctx, mux, NewRolesClient(conn))
-}
-
-// RegisterRolesHandlerClient registers the http handlers for service Roles
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RolesClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RolesClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "RolesClient" to call the correct interceptors.
-func RegisterRolesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RolesClient) error {
-
- mux.Handle("POST", pattern_Roles_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Create", runtime.WithHTTPPathPattern("/iam/v1/roles/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Roles_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Roles_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Update", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Roles_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Roles_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/List", runtime.WithHTTPPathPattern("/iam/v1/roles"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Roles_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Roles_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Delete", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Roles_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Roles_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Roles_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "parent_id"}, ""))
-
- pattern_Roles_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "id"}, ""))
-
- pattern_Roles_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "roles"}, ""))
-
- pattern_Roles_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "id"}, ""))
-)
-
-var (
- forward_Roles_Create_0 = runtime.ForwardResponseMessage
-
- forward_Roles_Update_0 = runtime.ForwardResponseMessage
-
- forward_Roles_List_0 = runtime.ForwardResponseMessage
-
- forward_Roles_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/role.platform.proto b/proto/platform/iam/v1/role.platform.proto
deleted file mode 100644
index 7ff18fb4..00000000
--- a/proto/platform/iam/v1/role.platform.proto
+++ /dev/null
@@ -1,100 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMRoleProto";
-
-package chainguard.platform.iam;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Roles {
- rpc Create(CreateRoleRequest) returns (Role) {
- option (google.api.http) = {
- post: "/iam/v1/roles/{parent_id=**}"
- body: "role"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLES_CREATE]
- }
- };
- }
-
- rpc Update(Role) returns (Role) {
- option (google.api.http) = {
- put: "/iam/v1/roles/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLES_UPDATE]
- }
- };
- }
-
- rpc List(RoleFilter) returns (RoleList) {
- option (google.api.http) = {
- get: "/iam/v1/roles"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLES_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteRoleRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/roles/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLES_DELETE]
- }
- };
- }
-}
-
-message Role {
- // id, The Group path under which this Role resides.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
- // name, human readable name of group.
- string name = 2;
- // description, human readable description of group.
- string description = 3;
- // capabilities, human readable list of capabilities supported by the group.
- repeated string capabilities = 4;
-}
-
-message RoleList {
- repeated Role items = 1;
-}
-
-message RoleFilter {
- // id is the exact UIDP of the record.
- string id = 1;
- // name is the exact name of the record
- string name = 2;
- // parent is the exact UIDP of the parent, or / for root
- string parent = 3;
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 4;
-}
-
-message CreateRoleRequest {
- // parent_id, The Group UIDP path under which the new Role resides.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
- // Role to create.
- Role role = 2;
-}
-
-message DeleteRoleRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
diff --git a/proto/platform/iam/v1/role.platform_grpc.pb.go b/proto/platform/iam/v1/role.platform_grpc.pb.go
deleted file mode 100644
index 593891b8..00000000
--- a/proto/platform/iam/v1/role.platform_grpc.pb.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: role.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Roles_Create_FullMethodName = "/chainguard.platform.iam.Roles/Create"
- Roles_Update_FullMethodName = "/chainguard.platform.iam.Roles/Update"
- Roles_List_FullMethodName = "/chainguard.platform.iam.Roles/List"
- Roles_Delete_FullMethodName = "/chainguard.platform.iam.Roles/Delete"
-)
-
-// RolesClient is the client API for Roles service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RolesClient interface {
- Create(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error)
- Update(ctx context.Context, in *Role, opts ...grpc.CallOption) (*Role, error)
- List(ctx context.Context, in *RoleFilter, opts ...grpc.CallOption) (*RoleList, error)
- Delete(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type rolesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRolesClient(cc grpc.ClientConnInterface) RolesClient {
- return &rolesClient{cc}
-}
-
-func (c *rolesClient) Create(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error) {
- out := new(Role)
- err := c.cc.Invoke(ctx, Roles_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *rolesClient) Update(ctx context.Context, in *Role, opts ...grpc.CallOption) (*Role, error) {
- out := new(Role)
- err := c.cc.Invoke(ctx, Roles_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *rolesClient) List(ctx context.Context, in *RoleFilter, opts ...grpc.CallOption) (*RoleList, error) {
- out := new(RoleList)
- err := c.cc.Invoke(ctx, Roles_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *rolesClient) Delete(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Roles_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RolesServer is the server API for Roles service.
-// All implementations must embed UnimplementedRolesServer
-// for forward compatibility
-type RolesServer interface {
- Create(context.Context, *CreateRoleRequest) (*Role, error)
- Update(context.Context, *Role) (*Role, error)
- List(context.Context, *RoleFilter) (*RoleList, error)
- Delete(context.Context, *DeleteRoleRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedRolesServer()
-}
-
-// UnimplementedRolesServer must be embedded to have forward compatible implementations.
-type UnimplementedRolesServer struct {
-}
-
-func (UnimplementedRolesServer) Create(context.Context, *CreateRoleRequest) (*Role, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedRolesServer) Update(context.Context, *Role) (*Role, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedRolesServer) List(context.Context, *RoleFilter) (*RoleList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedRolesServer) Delete(context.Context, *DeleteRoleRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedRolesServer) mustEmbedUnimplementedRolesServer() {}
-
-// UnsafeRolesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RolesServer will
-// result in compilation errors.
-type UnsafeRolesServer interface {
- mustEmbedUnimplementedRolesServer()
-}
-
-func RegisterRolesServer(s grpc.ServiceRegistrar, srv RolesServer) {
- s.RegisterService(&Roles_ServiceDesc, srv)
-}
-
-func _Roles_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateRoleRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RolesServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Roles_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RolesServer).Create(ctx, req.(*CreateRoleRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Roles_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Role)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RolesServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Roles_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RolesServer).Update(ctx, req.(*Role))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Roles_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RoleFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RolesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Roles_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RolesServer).List(ctx, req.(*RoleFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Roles_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteRoleRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RolesServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Roles_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RolesServer).Delete(ctx, req.(*DeleteRoleRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Roles_ServiceDesc is the grpc.ServiceDesc for Roles service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Roles_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.Roles",
- HandlerType: (*RolesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Roles_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _Roles_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _Roles_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Roles_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "role.platform.proto",
-}
diff --git a/proto/platform/iam/v1/role_binding.platform.event.go b/proto/platform/iam/v1/role_binding.platform.event.go
deleted file mode 100644
index 1e6eba55..00000000
--- a/proto/platform/iam/v1/role_binding.platform.event.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import "chainguard.dev/sdk/uidp"
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *RoleBinding) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *RoleBinding) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteRoleBindingRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteRoleBindingRequest) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
deleted file mode 100644
index a0d6b4da..00000000
--- a/proto/platform/iam/v1/role_binding.platform.pb.go
+++ /dev/null
@@ -1,705 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: role_binding.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type RoleBinding struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, the UID of this role binding.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // identity, UID of the Identity to bind.
- Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
- // group, UIDP of the group to bind. This field is ignored and will be removed
- // in the future. The group is always the parent of the UIDP.
- //
- // Deprecated: Marked as deprecated in role_binding.platform.proto.
- Group string `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"`
- // role, UIDP of the Role to bind
- Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
-}
-
-func (x *RoleBinding) Reset() {
- *x = RoleBinding{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleBinding) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleBinding) ProtoMessage() {}
-
-func (x *RoleBinding) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleBinding.ProtoReflect.Descriptor instead.
-func (*RoleBinding) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RoleBinding) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RoleBinding) GetIdentity() string {
- if x != nil {
- return x.Identity
- }
- return ""
-}
-
-// Deprecated: Marked as deprecated in role_binding.platform.proto.
-func (x *RoleBinding) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *RoleBinding) GetRole() string {
- if x != nil {
- return x.Role
- }
- return ""
-}
-
-type RoleBindingList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*RoleBindingList_Binding `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RoleBindingList) Reset() {
- *x = RoleBindingList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleBindingList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleBindingList) ProtoMessage() {}
-
-func (x *RoleBindingList) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleBindingList.ProtoReflect.Descriptor instead.
-func (*RoleBindingList) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RoleBindingList) GetItems() []*RoleBindingList_Binding {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type RoleBindingFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *RoleBindingFilter) Reset() {
- *x = RoleBindingFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleBindingFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleBindingFilter) ProtoMessage() {}
-
-func (x *RoleBindingFilter) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleBindingFilter.ProtoReflect.Descriptor instead.
-func (*RoleBindingFilter) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *RoleBindingFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RoleBindingFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-type CreateRoleBindingRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent, The Group UIDP path under which the new RoleBinding resides.
- Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
- // RoleBinding to create.
- RoleBinding *RoleBinding `protobuf:"bytes,2,opt,name=role_binding,json=roleBinding,proto3" json:"role_binding,omitempty"`
-}
-
-func (x *CreateRoleBindingRequest) Reset() {
- *x = CreateRoleBindingRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateRoleBindingRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateRoleBindingRequest) ProtoMessage() {}
-
-func (x *CreateRoleBindingRequest) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateRoleBindingRequest.ProtoReflect.Descriptor instead.
-func (*CreateRoleBindingRequest) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CreateRoleBindingRequest) GetParent() string {
- if x != nil {
- return x.Parent
- }
- return ""
-}
-
-func (x *CreateRoleBindingRequest) GetRoleBinding() *RoleBinding {
- if x != nil {
- return x.RoleBinding
- }
- return nil
-}
-
-type DeleteRoleBindingRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteRoleBindingRequest) Reset() {
- *x = DeleteRoleBindingRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteRoleBindingRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteRoleBindingRequest) ProtoMessage() {}
-
-func (x *DeleteRoleBindingRequest) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteRoleBindingRequest.ProtoReflect.Descriptor instead.
-func (*DeleteRoleBindingRequest) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *DeleteRoleBindingRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type RoleBindingList_Binding struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, the UID of this role binding.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // group of the bound role.
- Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
- // identity, UID of the Identity bound.
- Identity string `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"`
- // role of the bound identity.
- Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
- // email of the bound identity.
- Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
- // ClaimMatch issuer of the bound identity.
- ClaimMatchIssuer string `protobuf:"bytes,6,opt,name=claim_match_issuer,json=claimMatchIssuer,proto3" json:"claim_match_issuer,omitempty"`
- // ClaimMatch subject of the bound identity.
- ClaimMatchSubject string `protobuf:"bytes,7,opt,name=claim_match_subject,json=claimMatchSubject,proto3" json:"claim_match_subject,omitempty"`
- // created_at is the timestamp for when the role binding was created.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
-}
-
-func (x *RoleBindingList_Binding) Reset() {
- *x = RoleBindingList_Binding{}
- if protoimpl.UnsafeEnabled {
- mi := &file_role_binding_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RoleBindingList_Binding) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RoleBindingList_Binding) ProtoMessage() {}
-
-func (x *RoleBindingList_Binding) ProtoReflect() protoreflect.Message {
- mi := &file_role_binding_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RoleBindingList_Binding.ProtoReflect.Descriptor instead.
-func (*RoleBindingList_Binding) Descriptor() ([]byte, []int) {
- return file_role_binding_platform_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *RoleBindingList_Binding) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RoleBindingList_Binding) GetGroup() *Group {
- if x != nil {
- return x.Group
- }
- return nil
-}
-
-func (x *RoleBindingList_Binding) GetIdentity() string {
- if x != nil {
- return x.Identity
- }
- return ""
-}
-
-func (x *RoleBindingList_Binding) GetRole() *Role {
- if x != nil {
- return x.Role
- }
- return nil
-}
-
-func (x *RoleBindingList_Binding) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-func (x *RoleBindingList_Binding) GetClaimMatchIssuer() string {
- if x != nil {
- return x.ClaimMatchIssuer
- }
- return ""
-}
-
-func (x *RoleBindingList_Binding) GetClaimMatchSubject() string {
- if x != nil {
- return x.ClaimMatchSubject
- }
- return ""
-}
-
-func (x *RoleBindingList_Binding) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-var File_role_binding_platform_proto protoreflect.FileDescriptor
-
-var file_role_binding_platform_proto_rawDesc = []byte{
- 0x0a, 0x1b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x42,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a,
- 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xa9, 0x03, 0x0a, 0x0f, 0x52, 0x6f, 0x6c,
- 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xcd, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x79, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
- 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63,
- 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65,
- 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x61,
- 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64,
- 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
- 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0b,
- 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x32, 0x0a, 0x18, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32,
- 0x93, 0x06, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x12, 0xe5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
- 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x0c, 0x72,
- 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a,
- 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
- 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
- 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03, 0x10, 0x01, 0x12, 0xc4,
- 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x69,
- 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0x94, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_role_binding_platform_proto_rawDescOnce sync.Once
- file_role_binding_platform_proto_rawDescData = file_role_binding_platform_proto_rawDesc
-)
-
-func file_role_binding_platform_proto_rawDescGZIP() []byte {
- file_role_binding_platform_proto_rawDescOnce.Do(func() {
- file_role_binding_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_role_binding_platform_proto_rawDescData)
- })
- return file_role_binding_platform_proto_rawDescData
-}
-
-var file_role_binding_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_role_binding_platform_proto_goTypes = []interface{}{
- (*RoleBinding)(nil), // 0: chainguard.platform.iam.RoleBinding
- (*RoleBindingList)(nil), // 1: chainguard.platform.iam.RoleBindingList
- (*RoleBindingFilter)(nil), // 2: chainguard.platform.iam.RoleBindingFilter
- (*CreateRoleBindingRequest)(nil), // 3: chainguard.platform.iam.CreateRoleBindingRequest
- (*DeleteRoleBindingRequest)(nil), // 4: chainguard.platform.iam.DeleteRoleBindingRequest
- (*RoleBindingList_Binding)(nil), // 5: chainguard.platform.iam.RoleBindingList.Binding
- (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
- (*Group)(nil), // 7: chainguard.platform.iam.Group
- (*Role)(nil), // 8: chainguard.platform.iam.Role
- (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
- (*emptypb.Empty)(nil), // 10: google.protobuf.Empty
-}
-var file_role_binding_platform_proto_depIdxs = []int32{
- 5, // 0: chainguard.platform.iam.RoleBindingList.items:type_name -> chainguard.platform.iam.RoleBindingList.Binding
- 6, // 1: chainguard.platform.iam.RoleBindingFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 2: chainguard.platform.iam.CreateRoleBindingRequest.role_binding:type_name -> chainguard.platform.iam.RoleBinding
- 7, // 3: chainguard.platform.iam.RoleBindingList.Binding.group:type_name -> chainguard.platform.iam.Group
- 8, // 4: chainguard.platform.iam.RoleBindingList.Binding.role:type_name -> chainguard.platform.iam.Role
- 9, // 5: chainguard.platform.iam.RoleBindingList.Binding.created_at:type_name -> google.protobuf.Timestamp
- 3, // 6: chainguard.platform.iam.RoleBindings.Create:input_type -> chainguard.platform.iam.CreateRoleBindingRequest
- 0, // 7: chainguard.platform.iam.RoleBindings.Update:input_type -> chainguard.platform.iam.RoleBinding
- 2, // 8: chainguard.platform.iam.RoleBindings.List:input_type -> chainguard.platform.iam.RoleBindingFilter
- 4, // 9: chainguard.platform.iam.RoleBindings.Delete:input_type -> chainguard.platform.iam.DeleteRoleBindingRequest
- 0, // 10: chainguard.platform.iam.RoleBindings.Create:output_type -> chainguard.platform.iam.RoleBinding
- 0, // 11: chainguard.platform.iam.RoleBindings.Update:output_type -> chainguard.platform.iam.RoleBinding
- 1, // 12: chainguard.platform.iam.RoleBindings.List:output_type -> chainguard.platform.iam.RoleBindingList
- 10, // 13: chainguard.platform.iam.RoleBindings.Delete:output_type -> google.protobuf.Empty
- 10, // [10:14] is the sub-list for method output_type
- 6, // [6:10] 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_role_binding_platform_proto_init() }
-func file_role_binding_platform_proto_init() {
- if File_role_binding_platform_proto != nil {
- return
- }
- file_group_platform_proto_init()
- file_role_platform_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_role_binding_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleBinding); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_binding_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleBindingList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_binding_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleBindingFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_binding_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateRoleBindingRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_binding_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteRoleBindingRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_role_binding_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RoleBindingList_Binding); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_role_binding_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_role_binding_platform_proto_goTypes,
- DependencyIndexes: file_role_binding_platform_proto_depIdxs,
- MessageInfos: file_role_binding_platform_proto_msgTypes,
- }.Build()
- File_role_binding_platform_proto = out.File
- file_role_binding_platform_proto_rawDesc = nil
- file_role_binding_platform_proto_goTypes = nil
- file_role_binding_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.gw.go b/proto/platform/iam/v1/role_binding.platform.pb.gw.go
deleted file mode 100644
index a50a2575..00000000
--- a/proto/platform/iam/v1/role_binding.platform.pb.gw.go
+++ /dev/null
@@ -1,501 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: role_binding.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_RoleBindings_Create_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRoleBindingRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.RoleBinding); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
- }
-
- protoReq.Parent, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_RoleBindings_Create_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRoleBindingRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.RoleBinding); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
- }
-
- protoReq.Parent, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_RoleBindings_Update_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleBinding
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_RoleBindings_Update_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleBinding
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_RoleBindings_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_RoleBindings_List_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleBindingFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RoleBindings_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_RoleBindings_List_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RoleBindingFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RoleBindings_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_RoleBindings_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRoleBindingRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_RoleBindings_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRoleBindingRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterRoleBindingsHandlerServer registers the http handlers for service RoleBindings to "mux".
-// UnaryRPC :call RoleBindingsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRoleBindingsHandlerFromEndpoint instead.
-func RegisterRoleBindingsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RoleBindingsServer) error {
-
- mux.Handle("POST", pattern_RoleBindings_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Create", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{parent=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_RoleBindings_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_RoleBindings_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Update", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_RoleBindings_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_RoleBindings_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/List", runtime.WithHTTPPathPattern("/iam/v1/rolebindings"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_RoleBindings_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_RoleBindings_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Delete", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_RoleBindings_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterRoleBindingsHandlerFromEndpoint is same as RegisterRoleBindingsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterRoleBindingsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterRoleBindingsHandler(ctx, mux, conn)
-}
-
-// RegisterRoleBindingsHandler registers the http handlers for service RoleBindings to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterRoleBindingsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterRoleBindingsHandlerClient(ctx, mux, NewRoleBindingsClient(conn))
-}
-
-// RegisterRoleBindingsHandlerClient registers the http handlers for service RoleBindings
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RoleBindingsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RoleBindingsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "RoleBindingsClient" to call the correct interceptors.
-func RegisterRoleBindingsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RoleBindingsClient) error {
-
- mux.Handle("POST", pattern_RoleBindings_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Create", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{parent=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_RoleBindings_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_RoleBindings_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Update", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_RoleBindings_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_RoleBindings_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/List", runtime.WithHTTPPathPattern("/iam/v1/rolebindings"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_RoleBindings_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_RoleBindings_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Delete", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_RoleBindings_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_RoleBindings_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_RoleBindings_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "parent"}, ""))
-
- pattern_RoleBindings_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "id"}, ""))
-
- pattern_RoleBindings_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "rolebindings"}, ""))
-
- pattern_RoleBindings_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "id"}, ""))
-)
-
-var (
- forward_RoleBindings_Create_0 = runtime.ForwardResponseMessage
-
- forward_RoleBindings_Update_0 = runtime.ForwardResponseMessage
-
- forward_RoleBindings_List_0 = runtime.ForwardResponseMessage
-
- forward_RoleBindings_Delete_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/role_binding.platform.proto b/proto/platform/iam/v1/role_binding.platform.proto
deleted file mode 100644
index 1041b77f..00000000
--- a/proto/platform/iam/v1/role_binding.platform.proto
+++ /dev/null
@@ -1,134 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMRoleBindingProto";
-
-package chainguard.platform.iam;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-import "group.platform.proto";
-import "role.platform.proto";
-
-service RoleBindings {
- rpc Create(CreateRoleBindingRequest) returns (RoleBinding) {
- option (google.api.http) = {
- post: "/iam/v1/rolebindings/{parent=**}"
- body: "role_binding"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLE_BINDINGS_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.rolebindings.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(RoleBinding) returns (RoleBinding) {
- option (google.api.http) = {
- put: "/iam/v1/rolebindings/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLE_BINDINGS_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.rolebindings.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(RoleBindingFilter) returns (RoleBindingList) {
- option (google.api.http) = {
- get: "/iam/v1/rolebindings"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLE_BINDINGS_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteRoleBindingRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/rolebindings/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_ROLE_BINDINGS_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.rolebindings.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message RoleBinding {
- // id, the UID of this role binding.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
- // identity, UID of the Identity to bind.
- string identity = 2;
- // group, UIDP of the group to bind. This field is ignored and will be removed
- // in the future. The group is always the parent of the UIDP.
- string group = 3 [deprecated = true];
- // role, UIDP of the Role to bind
- string role = 4;
-}
-
-message RoleBindingList {
- message Binding {
- // id, the UID of this role binding.
- string id = 1;
- // group of the bound role.
- chainguard.platform.iam.Group group = 2;
- // identity, UID of the Identity bound.
- string identity = 3;
- // role of the bound identity.
- chainguard.platform.iam.Role role = 4;
- // email of the bound identity.
- string email = 5;
- // ClaimMatch issuer of the bound identity.
- string claim_match_issuer = 6;
- // ClaimMatch subject of the bound identity.
- string claim_match_subject = 7;
- // created_at is the timestamp for when the role binding was created.
- google.protobuf.Timestamp created_at = 8;
- }
- repeated Binding items = 1;
-}
-
-message RoleBindingFilter {
- // id is the exact UID of the record.
- string id = 1;
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 2;
-}
-
-message CreateRoleBindingRequest {
- // parent, The Group UIDP path under which the new RoleBinding resides.
- string parent = 1 [(chainguard.annotations.iam_scope) = true];
- // RoleBinding to create.
- RoleBinding role_binding = 2;
-}
-
-message DeleteRoleBindingRequest {
- // id is the exact UID of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
diff --git a/proto/platform/iam/v1/role_binding.platform_grpc.pb.go b/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
deleted file mode 100644
index 70734cf3..00000000
--- a/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: role_binding.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- RoleBindings_Create_FullMethodName = "/chainguard.platform.iam.RoleBindings/Create"
- RoleBindings_Update_FullMethodName = "/chainguard.platform.iam.RoleBindings/Update"
- RoleBindings_List_FullMethodName = "/chainguard.platform.iam.RoleBindings/List"
- RoleBindings_Delete_FullMethodName = "/chainguard.platform.iam.RoleBindings/Delete"
-)
-
-// RoleBindingsClient is the client API for RoleBindings service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RoleBindingsClient interface {
- Create(ctx context.Context, in *CreateRoleBindingRequest, opts ...grpc.CallOption) (*RoleBinding, error)
- Update(ctx context.Context, in *RoleBinding, opts ...grpc.CallOption) (*RoleBinding, error)
- List(ctx context.Context, in *RoleBindingFilter, opts ...grpc.CallOption) (*RoleBindingList, error)
- Delete(ctx context.Context, in *DeleteRoleBindingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-}
-
-type roleBindingsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRoleBindingsClient(cc grpc.ClientConnInterface) RoleBindingsClient {
- return &roleBindingsClient{cc}
-}
-
-func (c *roleBindingsClient) Create(ctx context.Context, in *CreateRoleBindingRequest, opts ...grpc.CallOption) (*RoleBinding, error) {
- out := new(RoleBinding)
- err := c.cc.Invoke(ctx, RoleBindings_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *roleBindingsClient) Update(ctx context.Context, in *RoleBinding, opts ...grpc.CallOption) (*RoleBinding, error) {
- out := new(RoleBinding)
- err := c.cc.Invoke(ctx, RoleBindings_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *roleBindingsClient) List(ctx context.Context, in *RoleBindingFilter, opts ...grpc.CallOption) (*RoleBindingList, error) {
- out := new(RoleBindingList)
- err := c.cc.Invoke(ctx, RoleBindings_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *roleBindingsClient) Delete(ctx context.Context, in *DeleteRoleBindingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, RoleBindings_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RoleBindingsServer is the server API for RoleBindings service.
-// All implementations must embed UnimplementedRoleBindingsServer
-// for forward compatibility
-type RoleBindingsServer interface {
- Create(context.Context, *CreateRoleBindingRequest) (*RoleBinding, error)
- Update(context.Context, *RoleBinding) (*RoleBinding, error)
- List(context.Context, *RoleBindingFilter) (*RoleBindingList, error)
- Delete(context.Context, *DeleteRoleBindingRequest) (*emptypb.Empty, error)
- mustEmbedUnimplementedRoleBindingsServer()
-}
-
-// UnimplementedRoleBindingsServer must be embedded to have forward compatible implementations.
-type UnimplementedRoleBindingsServer struct {
-}
-
-func (UnimplementedRoleBindingsServer) Create(context.Context, *CreateRoleBindingRequest) (*RoleBinding, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedRoleBindingsServer) Update(context.Context, *RoleBinding) (*RoleBinding, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedRoleBindingsServer) List(context.Context, *RoleBindingFilter) (*RoleBindingList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedRoleBindingsServer) Delete(context.Context, *DeleteRoleBindingRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedRoleBindingsServer) mustEmbedUnimplementedRoleBindingsServer() {}
-
-// UnsafeRoleBindingsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RoleBindingsServer will
-// result in compilation errors.
-type UnsafeRoleBindingsServer interface {
- mustEmbedUnimplementedRoleBindingsServer()
-}
-
-func RegisterRoleBindingsServer(s grpc.ServiceRegistrar, srv RoleBindingsServer) {
- s.RegisterService(&RoleBindings_ServiceDesc, srv)
-}
-
-func _RoleBindings_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateRoleBindingRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RoleBindingsServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: RoleBindings_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RoleBindingsServer).Create(ctx, req.(*CreateRoleBindingRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _RoleBindings_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RoleBinding)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RoleBindingsServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: RoleBindings_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RoleBindingsServer).Update(ctx, req.(*RoleBinding))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _RoleBindings_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RoleBindingFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RoleBindingsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: RoleBindings_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RoleBindingsServer).List(ctx, req.(*RoleBindingFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _RoleBindings_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteRoleBindingRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RoleBindingsServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: RoleBindings_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RoleBindingsServer).Delete(ctx, req.(*DeleteRoleBindingRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// RoleBindings_ServiceDesc is the grpc.ServiceDesc for RoleBindings service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var RoleBindings_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.RoleBindings",
- HandlerType: (*RoleBindingsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _RoleBindings_Create_Handler,
- },
- {
- MethodName: "Update",
- Handler: _RoleBindings_Update_Handler,
- },
- {
- MethodName: "List",
- Handler: _RoleBindings_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _RoleBindings_Delete_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "role_binding.platform.proto",
-}
diff --git a/proto/platform/iam/v1/test/mock_account_accociations.go b/proto/platform/iam/v1/test/mock_account_accociations.go
deleted file mode 100644
index 8de0cce6..00000000
--- a/proto/platform/iam/v1/test/mock_account_accociations.go
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.GroupAccountAssociationsClient = (*MockGroupAccountAssociationsClient)(nil)
-
-type MockGroupAccountAssociationsClient struct {
- OnCreate []AccountAssociationsOnCreate
- OnUpdate []AccountAssociationsOnUpdate
- OnDelete []AccountAssociationsOnDelete
- OnList []AccountAssociationsOnList
- OnCheck []AccountAssociationsOnCheck
-}
-
-type AccountAssociationsOnCreate struct {
- Given *iam.AccountAssociations
- Created *iam.AccountAssociations
- Error error
-}
-
-type AccountAssociationsOnUpdate struct {
- Given *iam.AccountAssociations
- Updated *iam.AccountAssociations
- Error error
-}
-
-type AccountAssociationsOnDelete struct {
- Given *iam.DeleteAccountAssociationsRequest
- Error error
-}
-
-type AccountAssociationsOnList struct {
- Given *iam.AccountAssociationsFilter
- List *iam.AccountAssociationsList
- Error error
-}
-
-type AccountAssociationsOnCheck struct {
- Given *iam.AccountAssociationsCheckRequest
- Status *iam.AccountAssociationsStatus
- Error error
-}
-
-func (m MockGroupAccountAssociationsClient) Create(_ context.Context, given *iam.AccountAssociations, _ ...grpc.CallOption) (*iam.AccountAssociations, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupAccountAssociationsClient) Update(_ context.Context, given *iam.AccountAssociations, _ ...grpc.CallOption) (*iam.AccountAssociations, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupAccountAssociationsClient) Delete(_ context.Context, given *iam.DeleteAccountAssociationsRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupAccountAssociationsClient) List(_ context.Context, given *iam.AccountAssociationsFilter, _ ...grpc.CallOption) (*iam.AccountAssociationsList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return proto.Clone(o.List).(*iam.AccountAssociationsList), o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupAccountAssociationsClient) Check(_ context.Context, given *iam.AccountAssociationsCheckRequest, _ ...grpc.CallOption) (*iam.AccountAssociationsStatus, error) {
- for _, o := range m.OnCheck {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return proto.Clone(o.Status).(*iam.AccountAssociationsStatus), o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_client.go b/proto/platform/iam/v1/test/mock_client.go
deleted file mode 100644
index 08444e61..00000000
--- a/proto/platform/iam/v1/test/mock_client.go
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- events "chainguard.dev/sdk/proto/platform/events/v1"
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-type MockIAMClient struct {
- OnClose error
-
- GroupsClient MockGroupsClient
- GroupInvitesClient MockGroupInvitesClient
- RolesClient MockRolesClient
- RoleBindingsClient MockRoleBindingsClient
- IdentitiesClient MockIdentitiesClient
- DeprecatedIdentitiesClient MockDeprecatedIdentitiesClient
- IdentityProvidersClient MockIdentityProvidersClient
- GroupAccountAssociationsClient MockGroupAccountAssociationsClient
- SubscriptionsClient MockSubscriptionsClient
-}
-
-var _ iam.Clients = (*MockIAMClient)(nil)
-
-func (m MockIAMClient) Groups() iam.GroupsClient {
- return &m.GroupsClient
-}
-
-func (m MockIAMClient) GroupInvites() iam.GroupInvitesClient {
- return &m.GroupInvitesClient
-}
-
-func (m MockIAMClient) Roles() iam.RolesClient {
- return &m.RolesClient
-}
-
-func (m MockIAMClient) RoleBindings() iam.RoleBindingsClient {
- return &m.RoleBindingsClient
-}
-
-func (m MockIAMClient) Identities() iam.IdentitiesClient {
- return &m.IdentitiesClient
-}
-
-func (m MockIAMClient) DeprecatedIdentities() events.IdentitiesClient {
- return &m.DeprecatedIdentitiesClient
-}
-
-func (m MockIAMClient) IdentityProviders() iam.IdentityProvidersClient {
- return &m.IdentityProvidersClient
-}
-
-func (m MockIAMClient) AccountAssociations() iam.GroupAccountAssociationsClient {
- return &m.GroupAccountAssociationsClient
-}
-
-func (m MockIAMClient) Subscriptions() events.SubscriptionsClient {
- return &m.SubscriptionsClient
-}
-
-func (m MockIAMClient) Close() error {
- return m.OnClose
-}
diff --git a/proto/platform/iam/v1/test/mock_deprecatedidentities.go b/proto/platform/iam/v1/test/mock_deprecatedidentities.go
deleted file mode 100644
index 3480421c..00000000
--- a/proto/platform/iam/v1/test/mock_deprecatedidentities.go
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- events "chainguard.dev/sdk/proto/platform/events/v1"
-)
-
-var _ events.IdentitiesClient = (*MockDeprecatedIdentitiesClient)(nil)
-
-type MockDeprecatedIdentitiesClient struct {
- OnCreate []DeprecatedIdentityOnCreate
-}
-
-type DeprecatedIdentityOnCreate struct {
- Given *events.Identity
- Created *events.Identity
- Error error
-}
-
-func (m MockDeprecatedIdentitiesClient) Create(_ context.Context, given *events.Identity, _ ...grpc.CallOption) (*events.Identity, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockDeprecatedIdentitiesClient) UpdateMetadata(ctx context.Context, in *events.IdentityMetadata, opts ...grpc.CallOption) (*events.IdentityMetadata, error) { //nolint: revive
- return in, nil
-}
diff --git a/proto/platform/iam/v1/test/mock_groups.go b/proto/platform/iam/v1/test/mock_groups.go
deleted file mode 100644
index d2eec859..00000000
--- a/proto/platform/iam/v1/test/mock_groups.go
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-)
-
-var _ iam.GroupsClient = (*MockGroupsClient)(nil)
-
-type MockGroupsClient struct {
- OnCreate []GroupOnCreate
- OnUpdate []GroupOnUpdate
- OnDelete []GroupOnDelete
- OnList []GroupOnList
-}
-
-type GroupOnCreate struct {
- Given *iam.CreateGroupRequest
- Created *iam.Group
- Error error
-}
-
-type GroupOnUpdate struct {
- Given *iam.Group
- Updated *iam.Group
- Error error
-}
-
-type GroupOnDelete struct {
- Given *iam.DeleteGroupRequest
- Error error
-}
-
-type GroupOnList struct {
- Given *iam.GroupFilter
- List *iam.GroupList
- Error error
-}
-
-func (m MockGroupsClient) Create(_ context.Context, given *iam.CreateGroupRequest, _ ...grpc.CallOption) (*iam.Group, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupsClient) Update(_ context.Context, given *iam.Group, _ ...grpc.CallOption) (*iam.Group, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupsClient) Delete(_ context.Context, given *iam.DeleteGroupRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupsClient) List(_ context.Context, given *iam.GroupFilter, _ ...grpc.CallOption) (*iam.GroupList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-// -- Server --
-
-type MockGroupsServer struct {
- iam.UnimplementedGroupsServer
- Client MockGroupsClient
-}
-
-func (m MockGroupsServer) Create(ctx context.Context, req *iam.CreateGroupRequest) (*iam.Group, error) {
- return m.Client.Create(ctx, req)
-}
-func (m MockGroupsServer) Update(ctx context.Context, req *iam.Group) (*iam.Group, error) {
- return m.Client.Update(ctx, req)
-}
-func (m MockGroupsServer) List(ctx context.Context, req *iam.GroupFilter) (*iam.GroupList, error) {
- return m.Client.List(ctx, req)
-}
-func (m MockGroupsServer) Delete(ctx context.Context, req *iam.DeleteGroupRequest) (*emptypb.Empty, error) {
- return m.Client.Delete(ctx, req)
-}
diff --git a/proto/platform/iam/v1/test/mock_identities.go b/proto/platform/iam/v1/test/mock_identities.go
deleted file mode 100644
index acea986d..00000000
--- a/proto/platform/iam/v1/test/mock_identities.go
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.IdentitiesClient = (*MockIdentitiesClient)(nil)
-
-type MockIdentitiesClient struct {
- OnCreate []IdentityOnCreate
- OnUpdate []IdentityOnUpdate
- OnDelete []IdentityOnDelete
- OnList []IdentityOnList
- OnLooKup []IdentityOnLookup
-}
-
-type IdentityOnCreate struct {
- Given *iam.CreateIdentityRequest
- Created *iam.Identity
- Error error
-}
-
-type IdentityOnUpdate struct {
- Given *iam.Identity
- Updated *iam.Identity
- Error error
-}
-
-type IdentityOnDelete struct {
- Given *iam.DeleteIdentityRequest
- Error error
-}
-
-type IdentityOnList struct {
- Given *iam.IdentityFilter
- List *iam.IdentityList
- Error error
-}
-
-type IdentityOnLookup struct {
- Given *iam.LookupRequest
- Found *iam.Identity
- Error error
-}
-
-func (m MockIdentitiesClient) Create(_ context.Context, given *iam.CreateIdentityRequest, _ ...grpc.CallOption) (*iam.Identity, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentitiesClient) Update(_ context.Context, given *iam.Identity, _ ...grpc.CallOption) (*iam.Identity, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentitiesClient) Delete(_ context.Context, given *iam.DeleteIdentityRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentitiesClient) List(_ context.Context, given *iam.IdentityFilter, _ ...grpc.CallOption) (*iam.IdentityList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentitiesClient) Lookup(_ context.Context, given *iam.LookupRequest, _ ...grpc.CallOption) (*iam.Identity, error) {
- for _, o := range m.OnLooKup {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Found, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_identity_providers.go b/proto/platform/iam/v1/test/mock_identity_providers.go
deleted file mode 100644
index 1d3d0c53..00000000
--- a/proto/platform/iam/v1/test/mock_identity_providers.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- api "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ api.IdentityProvidersClient = (*MockIdentityProvidersClient)(nil)
-
-type MockIdentityProvidersClient struct {
- OnCreate []IdentityProvidersOnCreate
- OnUpdate []IdentityProvidersOnUpdate
- OnDelete []IdentityProvidersOnDelete
- OnList []IdentityProvidersOnList
-}
-
-type IdentityProvidersOnCreate struct {
- Given *api.CreateIdentityProviderRequest
- Created *api.IdentityProvider
- Error error
-}
-
-type IdentityProvidersOnUpdate struct {
- Given *api.IdentityProvider
- Updated *api.IdentityProvider
- Error error
-}
-
-type IdentityProvidersOnDelete struct {
- Given *api.DeleteIdentityProviderRequest
- Error error
-}
-
-type IdentityProvidersOnList struct {
- Given *api.IdentityProviderFilter
- List *api.IdentityProviderList
- Error error
-}
-
-func (m MockIdentityProvidersClient) Create(_ context.Context, given *api.CreateIdentityProviderRequest, _ ...grpc.CallOption) (*api.IdentityProvider, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentityProvidersClient) Update(_ context.Context, given *api.IdentityProvider, _ ...grpc.CallOption) (*api.IdentityProvider, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentityProvidersClient) Delete(_ context.Context, given *api.DeleteIdentityProviderRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockIdentityProvidersClient) List(_ context.Context, given *api.IdentityProviderFilter, _ ...grpc.CallOption) (*api.IdentityProviderList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_invites.go b/proto/platform/iam/v1/test/mock_invites.go
deleted file mode 100644
index b546f392..00000000
--- a/proto/platform/iam/v1/test/mock_invites.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.GroupInvitesClient = (*MockGroupInvitesClient)(nil)
-
-type MockGroupInvitesClient struct {
- OnCreate []GroupInviteOnCreate
- OnCreateWithGroup []GroupInviteOnCreateWithGroup
- OnDelete []GroupInviteOnDelete
- OnList []GroupInviteOnList
-}
-
-type GroupInviteOnCreate struct {
- Given *iam.GroupInviteRequest
- Created *iam.GroupInvite
- Error error
-}
-
-type GroupInviteOnCreateWithGroup struct {
- Given *iam.GroupInviteRequest
- Created *iam.GroupInvite
- Error error
-}
-
-type GroupInviteOnDelete struct {
- Given *iam.DeleteGroupInviteRequest
- Error error
-}
-
-type GroupInviteOnList struct {
- Given *iam.GroupInviteFilter
- List *iam.GroupInviteList
- Error error
-}
-
-func (m MockGroupInvitesClient) Create(_ context.Context, given *iam.GroupInviteRequest, _ ...grpc.CallOption) (*iam.GroupInvite, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupInvitesClient) CreateWithGroup(_ context.Context, given *iam.GroupInviteRequest, _ ...grpc.CallOption) (*iam.GroupInvite, error) {
- for _, o := range m.OnCreateWithGroup {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupInvitesClient) Delete(_ context.Context, given *iam.DeleteGroupInviteRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockGroupInvitesClient) List(_ context.Context, given *iam.GroupInviteFilter, _ ...grpc.CallOption) (*iam.GroupInviteList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_role_bindings.go b/proto/platform/iam/v1/test/mock_role_bindings.go
deleted file mode 100644
index abd2b9e1..00000000
--- a/proto/platform/iam/v1/test/mock_role_bindings.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.RoleBindingsClient = (*MockRoleBindingsClient)(nil)
-
-type MockRoleBindingsClient struct {
- OnCreate []RoleBindingOnCreate
- OnUpdate []RoleBindingOnUpdate
- OnDelete []RoleBindingOnDelete
- OnList []RoleBindingOnList
-}
-
-type RoleBindingOnCreate struct {
- Given *iam.CreateRoleBindingRequest
- Created *iam.RoleBinding
- Error error
-}
-
-type RoleBindingOnUpdate struct {
- Given *iam.RoleBinding
- Updated *iam.RoleBinding
- Error error
-}
-
-type RoleBindingOnDelete struct {
- Given *iam.DeleteRoleBindingRequest
- Error error
-}
-
-type RoleBindingOnList struct {
- Given *iam.RoleBindingFilter
- List *iam.RoleBindingList
- Error error
-}
-
-func (m MockRoleBindingsClient) Create(_ context.Context, given *iam.CreateRoleBindingRequest, _ ...grpc.CallOption) (*iam.RoleBinding, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRoleBindingsClient) Update(_ context.Context, given *iam.RoleBinding, _ ...grpc.CallOption) (*iam.RoleBinding, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRoleBindingsClient) Delete(_ context.Context, given *iam.DeleteRoleBindingRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRoleBindingsClient) List(_ context.Context, given *iam.RoleBindingFilter, _ ...grpc.CallOption) (*iam.RoleBindingList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_roles.go b/proto/platform/iam/v1/test/mock_roles.go
deleted file mode 100644
index b3b3cc25..00000000
--- a/proto/platform/iam/v1/test/mock_roles.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.RolesClient = (*MockRolesClient)(nil)
-
-type MockRolesClient struct {
- OnCreate []RoleOnCreate
- OnUpdate []RoleOnUpdate
- OnDelete []RoleOnDelete
- OnList []RoleOnList
-}
-
-type RoleOnCreate struct {
- Given *iam.CreateRoleRequest
- Created *iam.Role
- Error error
-}
-
-type RoleOnUpdate struct {
- Given *iam.Role
- Updated *iam.Role
- Error error
-}
-
-type RoleOnDelete struct {
- Given *iam.DeleteRoleRequest
- Error error
-}
-
-type RoleOnList struct {
- Given *iam.RoleFilter
- List *iam.RoleList
- Error error
-}
-
-func (m MockRolesClient) Create(_ context.Context, given *iam.CreateRoleRequest, _ ...grpc.CallOption) (*iam.Role, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRolesClient) Update(_ context.Context, given *iam.Role, _ ...grpc.CallOption) (*iam.Role, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRolesClient) Delete(_ context.Context, given *iam.DeleteRoleRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRolesClient) List(_ context.Context, given *iam.RoleFilter, _ ...grpc.CallOption) (*iam.RoleList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/iam/v1/test/mock_subscriptions.go b/proto/platform/iam/v1/test/mock_subscriptions.go
deleted file mode 100644
index 8ac42298..00000000
--- a/proto/platform/iam/v1/test/mock_subscriptions.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- events "chainguard.dev/sdk/proto/platform/events/v1"
-)
-
-var _ events.SubscriptionsClient = (*MockSubscriptionsClient)(nil)
-
-type MockSubscriptionsClient struct {
- OnCreate []SubscriptionOnCreate
- OnUpdate []SubscriptionOnUpdate
- OnDelete []SubscriptionOnDelete
- OnList []SubscriptionOnList
-}
-
-type SubscriptionOnCreate struct {
- Given *events.CreateSubscriptionRequest
- Created *events.Subscription
- Error error
-}
-
-type SubscriptionOnUpdate struct {
- Given *events.Subscription
- Updated *events.Subscription
- Error error
-}
-
-type SubscriptionOnDelete struct {
- Given *events.DeleteSubscriptionRequest
- Error error
-}
-
-type SubscriptionOnList struct {
- Given *events.SubscriptionFilter
- List *events.SubscriptionList
- Error error
-}
-
-func (m MockSubscriptionsClient) Create(_ context.Context, given *events.CreateSubscriptionRequest, _ ...grpc.CallOption) (*events.Subscription, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSubscriptionsClient) Update(_ context.Context, given *events.Subscription, _ ...grpc.CallOption) (*events.Subscription, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSubscriptionsClient) Delete(_ context.Context, given *events.DeleteSubscriptionRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSubscriptionsClient) List(_ context.Context, given *events.SubscriptionFilter, _ ...grpc.CallOption) (*events.SubscriptionList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/oidc/v1/clients.go b/proto/platform/oidc/v1/clients.go
deleted file mode 100644
index 2e727281..00000000
--- a/proto/platform/oidc/v1/clients.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Clients interface {
- STS() SecurityTokenServiceClient
-
- Close() error
-}
-
-type options struct {
- userAgent string
-}
-
-type ClientOption func(*options)
-
-func WithUserAgent(agent string) ClientOption {
- return func(o *options) {
- o.userAgent = agent
- }
-}
-func NewClients(ctx context.Context, addr string, token string, opts ...ClientOption) (Clients, error) {
- conf := new(options)
- for _, opt := range opts {
- opt(conf)
- }
-
- uri, err := url.Parse(addr)
- if err != nil {
- return nil, fmt.Errorf("failed to parse oidc service address, must be a url: %w", err)
- }
-
- target, rpcOpts := delegate.GRPCOptions(*uri)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- rpcOpts = append(rpcOpts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- if conf.userAgent != "" {
- rpcOpts = append(rpcOpts, grpc.WithUserAgent(conf.userAgent))
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, rpcOpts...)
- if err != nil {
- return nil, fmt.Errorf("oidc.NewClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- sts: NewSecurityTokenServiceClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- sts: NewSecurityTokenServiceClient(conn),
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- sts SecurityTokenServiceClient
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) STS() SecurityTokenServiceClient {
- return c.sts
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/oidc/v1/doc.go b/proto/platform/oidc/v1/doc.go
deleted file mode 100644
index e3a2e450..00000000
--- a/proto/platform/oidc/v1/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing OIDC interactions for the Platform.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. oidc.platform.proto
-package v1
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.go b/proto/platform/oidc/v1/oidc.platform.pb.go
deleted file mode 100644
index 9b2888c5..00000000
--- a/proto/platform/oidc/v1/oidc.platform.pb.go
+++ /dev/null
@@ -1,459 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: oidc.platform.proto
-
-package v1
-
-import (
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type ExchangeRefreshTokenRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Aud []string `protobuf:"bytes,1,rep,name=aud,proto3" json:"aud,omitempty"`
- Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
- // List of capabilities to request for the token.
- Cap []string `protobuf:"bytes,3,rep,name=cap,proto3" json:"cap,omitempty"`
-}
-
-func (x *ExchangeRefreshTokenRequest) Reset() {
- *x = ExchangeRefreshTokenRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_oidc_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ExchangeRefreshTokenRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExchangeRefreshTokenRequest) ProtoMessage() {}
-
-func (x *ExchangeRefreshTokenRequest) ProtoReflect() protoreflect.Message {
- mi := &file_oidc_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExchangeRefreshTokenRequest.ProtoReflect.Descriptor instead.
-func (*ExchangeRefreshTokenRequest) Descriptor() ([]byte, []int) {
- return file_oidc_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ExchangeRefreshTokenRequest) GetAud() []string {
- if x != nil {
- return x.Aud
- }
- return nil
-}
-
-func (x *ExchangeRefreshTokenRequest) GetScope() string {
- if x != nil {
- return x.Scope
- }
- return ""
-}
-
-func (x *ExchangeRefreshTokenRequest) GetCap() []string {
- if x != nil {
- return x.Cap
- }
- return nil
-}
-
-type ExchangeRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Aud []string `protobuf:"bytes,1,rep,name=aud,proto3" json:"aud,omitempty"`
- Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
- Cluster string `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"`
- Identity string `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"`
- // List of capabilities to request for the token.
- Cap []string `protobuf:"bytes,5,rep,name=cap,proto3" json:"cap,omitempty"`
- // Whether or not to include the upstream token in the response
- IncludeUpstreamToken bool `protobuf:"varint,6,opt,name=include_upstream_token,json=includeUpstreamToken,proto3" json:"include_upstream_token,omitempty"`
-}
-
-func (x *ExchangeRequest) Reset() {
- *x = ExchangeRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_oidc_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ExchangeRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExchangeRequest) ProtoMessage() {}
-
-func (x *ExchangeRequest) ProtoReflect() protoreflect.Message {
- mi := &file_oidc_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExchangeRequest.ProtoReflect.Descriptor instead.
-func (*ExchangeRequest) Descriptor() ([]byte, []int) {
- return file_oidc_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ExchangeRequest) GetAud() []string {
- if x != nil {
- return x.Aud
- }
- return nil
-}
-
-func (x *ExchangeRequest) GetScope() string {
- if x != nil {
- return x.Scope
- }
- return ""
-}
-
-func (x *ExchangeRequest) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *ExchangeRequest) GetIdentity() string {
- if x != nil {
- return x.Identity
- }
- return ""
-}
-
-func (x *ExchangeRequest) GetCap() []string {
- if x != nil {
- return x.Cap
- }
- return nil
-}
-
-func (x *ExchangeRequest) GetIncludeUpstreamToken() bool {
- if x != nil {
- return x.IncludeUpstreamToken
- }
- return false
-}
-
-type RawToken struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
-}
-
-func (x *RawToken) Reset() {
- *x = RawToken{}
- if protoimpl.UnsafeEnabled {
- mi := &file_oidc_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RawToken) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RawToken) ProtoMessage() {}
-
-func (x *RawToken) ProtoReflect() protoreflect.Message {
- mi := &file_oidc_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RawToken.ProtoReflect.Descriptor instead.
-func (*RawToken) Descriptor() ([]byte, []int) {
- return file_oidc_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *RawToken) GetToken() string {
- if x != nil {
- return x.Token
- }
- return ""
-}
-
-// ExchangeRefreshToken returns a pair of token, in order to allow
-// refresh token to also be rotated.
-type TokenPair struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Token *RawToken `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
- RefreshToken *RawToken `protobuf:"bytes,2,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"`
-}
-
-func (x *TokenPair) Reset() {
- *x = TokenPair{}
- if protoimpl.UnsafeEnabled {
- mi := &file_oidc_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TokenPair) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TokenPair) ProtoMessage() {}
-
-func (x *TokenPair) ProtoReflect() protoreflect.Message {
- mi := &file_oidc_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TokenPair.ProtoReflect.Descriptor instead.
-func (*TokenPair) Descriptor() ([]byte, []int) {
- return file_oidc_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *TokenPair) GetToken() *RawToken {
- if x != nil {
- return x.Token
- }
- return nil
-}
-
-func (x *TokenPair) GetRefreshToken() *RawToken {
- if x != nil {
- return x.RefreshToken
- }
- return nil
-}
-
-var File_oidc_platform_proto protoreflect.FileDescriptor
-
-var file_oidc_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x1b, 0x45, 0x78, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x75, 0x64, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x61, 0x75, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
- 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
- 0x12, 0x39, 0x0a, 0x03, 0x63, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x27, 0xfa,
- 0x41, 0x24, 0x0a, 0x22, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63,
- 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x43, 0x61, 0x70, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x03, 0x63, 0x61, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x0f,
- 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x10, 0x0a, 0x03, 0x61, 0x75, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x61, 0x75,
- 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a,
- 0x03, 0x63, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x41, 0x24, 0x0a,
- 0x22, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63, 0x61, 0x70, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x79, 0x52, 0x03, 0x63, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x6f, 0x6b,
- 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x20,
- 0x0a, 0x08, 0x52, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
- 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
- 0x22, 0x8e, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x38,
- 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x47, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72,
- 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x6f,
- 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x32, 0xb4, 0x02, 0x0a, 0x14, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f,
- 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x08, 0x45,
- 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69,
- 0x64, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61,
- 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x5a, 0x0f,
- 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22,
- 0x0d, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x97,
- 0x01, 0x0a, 0x14, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65,
- 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69,
- 0x64, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65,
- 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50,
- 0x61, 0x69, 0x72, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x73, 0x74,
- 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65,
- 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x65, 0x0a, 0x23, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x76, 0x31, 0x42,
- 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x6f, 0x69, 0x64, 0x63, 0x2f, 0x76, 0x31, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_oidc_platform_proto_rawDescOnce sync.Once
- file_oidc_platform_proto_rawDescData = file_oidc_platform_proto_rawDesc
-)
-
-func file_oidc_platform_proto_rawDescGZIP() []byte {
- file_oidc_platform_proto_rawDescOnce.Do(func() {
- file_oidc_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_oidc_platform_proto_rawDescData)
- })
- return file_oidc_platform_proto_rawDescData
-}
-
-var file_oidc_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_oidc_platform_proto_goTypes = []interface{}{
- (*ExchangeRefreshTokenRequest)(nil), // 0: chainguard.platform.oidc.ExchangeRefreshTokenRequest
- (*ExchangeRequest)(nil), // 1: chainguard.platform.oidc.ExchangeRequest
- (*RawToken)(nil), // 2: chainguard.platform.oidc.RawToken
- (*TokenPair)(nil), // 3: chainguard.platform.oidc.TokenPair
-}
-var file_oidc_platform_proto_depIdxs = []int32{
- 2, // 0: chainguard.platform.oidc.TokenPair.token:type_name -> chainguard.platform.oidc.RawToken
- 2, // 1: chainguard.platform.oidc.TokenPair.refresh_token:type_name -> chainguard.platform.oidc.RawToken
- 1, // 2: chainguard.platform.oidc.SecurityTokenService.Exchange:input_type -> chainguard.platform.oidc.ExchangeRequest
- 0, // 3: chainguard.platform.oidc.SecurityTokenService.ExchangeRefreshToken:input_type -> chainguard.platform.oidc.ExchangeRefreshTokenRequest
- 2, // 4: chainguard.platform.oidc.SecurityTokenService.Exchange:output_type -> chainguard.platform.oidc.RawToken
- 3, // 5: chainguard.platform.oidc.SecurityTokenService.ExchangeRefreshToken:output_type -> chainguard.platform.oidc.TokenPair
- 4, // [4:6] is the sub-list for method output_type
- 2, // [2:4] 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_oidc_platform_proto_init() }
-func file_oidc_platform_proto_init() {
- if File_oidc_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_oidc_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExchangeRefreshTokenRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_oidc_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExchangeRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_oidc_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RawToken); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_oidc_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TokenPair); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_oidc_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_oidc_platform_proto_goTypes,
- DependencyIndexes: file_oidc_platform_proto_depIdxs,
- MessageInfos: file_oidc_platform_proto_msgTypes,
- }.Build()
- File_oidc_platform_proto = out.File
- file_oidc_platform_proto_rawDesc = nil
- file_oidc_platform_proto_goTypes = nil
- file_oidc_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.gw.go b/proto/platform/oidc/v1/oidc.platform.pb.gw.go
deleted file mode 100644
index e3e6dd52..00000000
--- a/proto/platform/oidc/v1/oidc.platform.pb.gw.go
+++ /dev/null
@@ -1,336 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: oidc.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_SecurityTokenService_Exchange_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SecurityTokenService_Exchange_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Exchange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SecurityTokenService_Exchange_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Exchange(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_SecurityTokenService_Exchange_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SecurityTokenService_Exchange_1(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_1); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Exchange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SecurityTokenService_Exchange_1(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_1); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Exchange(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_SecurityTokenService_ExchangeRefreshToken_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SecurityTokenService_ExchangeRefreshToken_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRefreshTokenRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_ExchangeRefreshToken_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ExchangeRefreshToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SecurityTokenService_ExchangeRefreshToken_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ExchangeRefreshTokenRequest
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_ExchangeRefreshToken_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ExchangeRefreshToken(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterSecurityTokenServiceHandlerServer registers the http handlers for service SecurityTokenService to "mux".
-// UnaryRPC :call SecurityTokenServiceServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSecurityTokenServiceHandlerFromEndpoint instead.
-func RegisterSecurityTokenServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SecurityTokenServiceServer) error {
-
- mux.Handle("POST", pattern_SecurityTokenService_Exchange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SecurityTokenService_Exchange_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_Exchange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SecurityTokenService_Exchange_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SecurityTokenService_Exchange_1(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_Exchange_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_SecurityTokenService_ExchangeRefreshToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken", runtime.WithHTTPPathPattern("/sts/exchange_refresh_token"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SecurityTokenService_ExchangeRefreshToken_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_ExchangeRefreshToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterSecurityTokenServiceHandlerFromEndpoint is same as RegisterSecurityTokenServiceHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterSecurityTokenServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterSecurityTokenServiceHandler(ctx, mux, conn)
-}
-
-// RegisterSecurityTokenServiceHandler registers the http handlers for service SecurityTokenService to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterSecurityTokenServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterSecurityTokenServiceHandlerClient(ctx, mux, NewSecurityTokenServiceClient(conn))
-}
-
-// RegisterSecurityTokenServiceHandlerClient registers the http handlers for service SecurityTokenService
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SecurityTokenServiceClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SecurityTokenServiceClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "SecurityTokenServiceClient" to call the correct interceptors.
-func RegisterSecurityTokenServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SecurityTokenServiceClient) error {
-
- mux.Handle("POST", pattern_SecurityTokenService_Exchange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SecurityTokenService_Exchange_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_Exchange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SecurityTokenService_Exchange_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SecurityTokenService_Exchange_1(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_Exchange_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_SecurityTokenService_ExchangeRefreshToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken", runtime.WithHTTPPathPattern("/sts/exchange_refresh_token"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SecurityTokenService_ExchangeRefreshToken_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SecurityTokenService_ExchangeRefreshToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_SecurityTokenService_Exchange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange"}, ""))
-
- pattern_SecurityTokenService_Exchange_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange"}, ""))
-
- pattern_SecurityTokenService_ExchangeRefreshToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange_refresh_token"}, ""))
-)
-
-var (
- forward_SecurityTokenService_Exchange_0 = runtime.ForwardResponseMessage
-
- forward_SecurityTokenService_Exchange_1 = runtime.ForwardResponseMessage
-
- forward_SecurityTokenService_ExchangeRefreshToken_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/oidc/v1/oidc.platform.proto b/proto/platform/oidc/v1/oidc.platform.proto
deleted file mode 100644
index df9442b3..00000000
--- a/proto/platform/oidc/v1/oidc.platform.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/oidc/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.oidc.v1";
-option java_outer_classname = "PlatformOIDCProto";
-
-package chainguard.platform.oidc;
-
-import "google/api/annotations.proto";
-import "google/api/resource.proto";
-
-service SecurityTokenService {
- rpc Exchange(ExchangeRequest) returns (RawToken) {
- option (google.api.http) = {
- post: "/sts/exchange"
- additional_bindings {
- get: "/sts/exchange"
- }
- };
- }
-
- rpc ExchangeRefreshToken(ExchangeRefreshTokenRequest) returns (TokenPair) {
- option (google.api.http) = {
- post: "/sts/exchange_refresh_token"
- };
- }
-}
-
-message ExchangeRefreshTokenRequest {
- repeated string aud = 1;
- string scope = 2;
-
- // List of capabilities to request for the token.
- repeated string cap = 3 [(google.api.resource_reference) = {
- type: "chainguard.capabilities/Capability"
- }];
-}
-
-message ExchangeRequest {
- repeated string aud = 1;
- string scope = 2;
- string cluster = 3;
- string identity = 4;
-
- // List of capabilities to request for the token.
- repeated string cap = 5 [(google.api.resource_reference) = {
- type: "chainguard.capabilities/Capability"
- }];
-
- // Whether or not to include the upstream token in the response
- bool include_upstream_token = 6;
-}
-
-message RawToken {
- string token = 1;
-}
-
-// ExchangeRefreshToken returns a pair of token, in order to allow
-// refresh token to also be rotated.
-message TokenPair {
- RawToken token = 1;
- RawToken refresh_token = 2;
-}
diff --git a/proto/platform/oidc/v1/oidc.platform_grpc.pb.go b/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
deleted file mode 100644
index f08ece4e..00000000
--- a/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: oidc.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- SecurityTokenService_Exchange_FullMethodName = "/chainguard.platform.oidc.SecurityTokenService/Exchange"
- SecurityTokenService_ExchangeRefreshToken_FullMethodName = "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken"
-)
-
-// SecurityTokenServiceClient is the client API for SecurityTokenService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SecurityTokenServiceClient interface {
- Exchange(ctx context.Context, in *ExchangeRequest, opts ...grpc.CallOption) (*RawToken, error)
- ExchangeRefreshToken(ctx context.Context, in *ExchangeRefreshTokenRequest, opts ...grpc.CallOption) (*TokenPair, error)
-}
-
-type securityTokenServiceClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSecurityTokenServiceClient(cc grpc.ClientConnInterface) SecurityTokenServiceClient {
- return &securityTokenServiceClient{cc}
-}
-
-func (c *securityTokenServiceClient) Exchange(ctx context.Context, in *ExchangeRequest, opts ...grpc.CallOption) (*RawToken, error) {
- out := new(RawToken)
- err := c.cc.Invoke(ctx, SecurityTokenService_Exchange_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *securityTokenServiceClient) ExchangeRefreshToken(ctx context.Context, in *ExchangeRefreshTokenRequest, opts ...grpc.CallOption) (*TokenPair, error) {
- out := new(TokenPair)
- err := c.cc.Invoke(ctx, SecurityTokenService_ExchangeRefreshToken_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SecurityTokenServiceServer is the server API for SecurityTokenService service.
-// All implementations must embed UnimplementedSecurityTokenServiceServer
-// for forward compatibility
-type SecurityTokenServiceServer interface {
- Exchange(context.Context, *ExchangeRequest) (*RawToken, error)
- ExchangeRefreshToken(context.Context, *ExchangeRefreshTokenRequest) (*TokenPair, error)
- mustEmbedUnimplementedSecurityTokenServiceServer()
-}
-
-// UnimplementedSecurityTokenServiceServer must be embedded to have forward compatible implementations.
-type UnimplementedSecurityTokenServiceServer struct {
-}
-
-func (UnimplementedSecurityTokenServiceServer) Exchange(context.Context, *ExchangeRequest) (*RawToken, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Exchange not implemented")
-}
-func (UnimplementedSecurityTokenServiceServer) ExchangeRefreshToken(context.Context, *ExchangeRefreshTokenRequest) (*TokenPair, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ExchangeRefreshToken not implemented")
-}
-func (UnimplementedSecurityTokenServiceServer) mustEmbedUnimplementedSecurityTokenServiceServer() {}
-
-// UnsafeSecurityTokenServiceServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SecurityTokenServiceServer will
-// result in compilation errors.
-type UnsafeSecurityTokenServiceServer interface {
- mustEmbedUnimplementedSecurityTokenServiceServer()
-}
-
-func RegisterSecurityTokenServiceServer(s grpc.ServiceRegistrar, srv SecurityTokenServiceServer) {
- s.RegisterService(&SecurityTokenService_ServiceDesc, srv)
-}
-
-func _SecurityTokenService_Exchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ExchangeRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SecurityTokenServiceServer).Exchange(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SecurityTokenService_Exchange_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SecurityTokenServiceServer).Exchange(ctx, req.(*ExchangeRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _SecurityTokenService_ExchangeRefreshToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ExchangeRefreshTokenRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SecurityTokenServiceServer).ExchangeRefreshToken(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SecurityTokenService_ExchangeRefreshToken_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SecurityTokenServiceServer).ExchangeRefreshToken(ctx, req.(*ExchangeRefreshTokenRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// SecurityTokenService_ServiceDesc is the grpc.ServiceDesc for SecurityTokenService service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var SecurityTokenService_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.oidc.SecurityTokenService",
- HandlerType: (*SecurityTokenServiceServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Exchange",
- Handler: _SecurityTokenService_Exchange_Handler,
- },
- {
- MethodName: "ExchangeRefreshToken",
- Handler: _SecurityTokenService_ExchangeRefreshToken_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "oidc.platform.proto",
-}
diff --git a/proto/platform/oidc/v1/test/mock_client.go b/proto/platform/oidc/v1/test/mock_client.go
deleted file mode 100644
index 5b04441b..00000000
--- a/proto/platform/oidc/v1/test/mock_client.go
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
-)
-
-type MockOIDCClient struct {
- OnClose error
-
- STSClient MockSTSClient
-}
-
-var _ oidc.Clients = (*MockOIDCClient)(nil)
-
-func (m MockOIDCClient) STS() oidc.SecurityTokenServiceClient {
- return &m.STSClient
-}
-
-func (m MockOIDCClient) Close() error {
- return m.OnClose
-}
diff --git a/proto/platform/oidc/v1/test/mock_sts.go b/proto/platform/oidc/v1/test/mock_sts.go
deleted file mode 100644
index 2c19fb58..00000000
--- a/proto/platform/oidc/v1/test/mock_sts.go
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-)
-
-var _ oidc.SecurityTokenServiceClient = (*MockSTSClient)(nil)
-
-type MockSTSClient struct {
- OnExchange []STSOnExchange
- OnGetAccessToken []STSOnGetAccessToken
-}
-
-func (m MockSTSClient) Exchange(_ context.Context, given *oidc.ExchangeRequest, _ ...grpc.CallOption) (*oidc.RawToken, error) {
- for _, o := range m.OnExchange {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Exchanged, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSTSClient) ExchangeRefreshToken(_ context.Context, given *oidc.ExchangeRefreshTokenRequest, _ ...grpc.CallOption) (*oidc.TokenPair, error) {
- for _, o := range m.OnGetAccessToken {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Exchanged, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-type STSOnExchange struct {
- Given *oidc.ExchangeRequest
- Exchanged *oidc.RawToken
- Error error
-}
-
-type STSOnGetAccessToken struct {
- Given *oidc.ExchangeRefreshTokenRequest
- Exchanged *oidc.TokenPair
- Error error
-}
diff --git a/proto/platform/ping/v1/clients.go b/proto/platform/ping/v1/clients.go
deleted file mode 100644
index c686bbc7..00000000
--- a/proto/platform/ping/v1/clients.go
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Clients interface {
- Ping() PingServiceClient
-
- Close() error
-}
-
-func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
- uri, err := url.Parse(addr)
- if err != nil {
- return nil, fmt.Errorf("failed to parse ping service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*uri)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("ping.NewClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- ping: NewPingServiceClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- ping: NewPingServiceClient(conn),
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- ping PingServiceClient
- conn *grpc.ClientConn
-}
-
-func (c *clients) Ping() PingServiceClient {
- return c.ping
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/ping/v1/doc.go b/proto/platform/ping/v1/doc.go
deleted file mode 100644
index 4e6c5d67..00000000
--- a/proto/platform/ping/v1/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing ping interactions for the Platform.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. ping.platform.proto
-package v1
diff --git a/proto/platform/ping/v1/ping.platform.pb.go b/proto/platform/ping/v1/ping.platform.pb.go
deleted file mode 100644
index 45a42d39..00000000
--- a/proto/platform/ping/v1/ping.platform.pb.go
+++ /dev/null
@@ -1,216 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: ping.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type PingRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *PingRequest) Reset() {
- *x = PingRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_ping_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PingRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PingRequest) ProtoMessage() {}
-
-func (x *PingRequest) ProtoReflect() protoreflect.Message {
- mi := &file_ping_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead.
-func (*PingRequest) Descriptor() ([]byte, []int) {
- return file_ping_platform_proto_rawDescGZIP(), []int{0}
-}
-
-type Response struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
-}
-
-func (x *Response) Reset() {
- *x = Response{}
- if protoimpl.UnsafeEnabled {
- mi := &file_ping_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Response) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Response) ProtoMessage() {}
-
-func (x *Response) ProtoReflect() protoreflect.Message {
- mi := &file_ping_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Response.ProtoReflect.Descriptor instead.
-func (*Response) Descriptor() ([]byte, []int) {
- return file_ping_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Response) GetResponse() string {
- if x != nil {
- return x.Response
- }
- return ""
-}
-
-var File_ping_platform_proto protoreflect.FileDescriptor
-
-var file_ping_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x7f, 0x0a, 0x0b,
- 0x50, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x70, 0x0a, 0x04, 0x50,
- 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x50,
- 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31,
- 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x42, 0x65, 0x0a,
- 0x23, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e,
- 0x67, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x69,
- 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x69, 0x6e,
- 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_ping_platform_proto_rawDescOnce sync.Once
- file_ping_platform_proto_rawDescData = file_ping_platform_proto_rawDesc
-)
-
-func file_ping_platform_proto_rawDescGZIP() []byte {
- file_ping_platform_proto_rawDescOnce.Do(func() {
- file_ping_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_ping_platform_proto_rawDescData)
- })
- return file_ping_platform_proto_rawDescData
-}
-
-var file_ping_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_ping_platform_proto_goTypes = []interface{}{
- (*PingRequest)(nil), // 0: chainguard.platform.ping.PingRequest
- (*Response)(nil), // 1: chainguard.platform.ping.Response
-}
-var file_ping_platform_proto_depIdxs = []int32{
- 0, // 0: chainguard.platform.ping.PingService.Ping:input_type -> chainguard.platform.ping.PingRequest
- 1, // 1: chainguard.platform.ping.PingService.Ping:output_type -> chainguard.platform.ping.Response
- 1, // [1:2] is the sub-list for method output_type
- 0, // [0:1] is the sub-list for method input_type
- 0, // [0:0] is the sub-list for extension type_name
- 0, // [0:0] is the sub-list for extension extendee
- 0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_ping_platform_proto_init() }
-func file_ping_platform_proto_init() {
- if File_ping_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_ping_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PingRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_ping_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Response); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_ping_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 2,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_ping_platform_proto_goTypes,
- DependencyIndexes: file_ping_platform_proto_depIdxs,
- MessageInfos: file_ping_platform_proto_msgTypes,
- }.Build()
- File_ping_platform_proto = out.File
- file_ping_platform_proto_rawDesc = nil
- file_ping_platform_proto_goTypes = nil
- file_ping_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/ping/v1/ping.platform.pb.gw.go b/proto/platform/ping/v1/ping.platform.pb.gw.go
deleted file mode 100644
index d906d932..00000000
--- a/proto/platform/ping/v1/ping.platform.pb.gw.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: ping.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_PingService_Ping_0(ctx context.Context, marshaler runtime.Marshaler, client PingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PingRequest
- var metadata runtime.ServerMetadata
-
- msg, err := client.Ping(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_PingService_Ping_0(ctx context.Context, marshaler runtime.Marshaler, server PingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PingRequest
- var metadata runtime.ServerMetadata
-
- msg, err := server.Ping(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterPingServiceHandlerServer registers the http handlers for service PingService to "mux".
-// UnaryRPC :call PingServiceServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPingServiceHandlerFromEndpoint instead.
-func RegisterPingServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PingServiceServer) error {
-
- mux.Handle("GET", pattern_PingService_Ping_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.ping.PingService/Ping", runtime.WithHTTPPathPattern("/ping/v1/ping"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_PingService_Ping_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_PingService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterPingServiceHandlerFromEndpoint is same as RegisterPingServiceHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterPingServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterPingServiceHandler(ctx, mux, conn)
-}
-
-// RegisterPingServiceHandler registers the http handlers for service PingService to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterPingServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterPingServiceHandlerClient(ctx, mux, NewPingServiceClient(conn))
-}
-
-// RegisterPingServiceHandlerClient registers the http handlers for service PingService
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PingServiceClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PingServiceClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "PingServiceClient" to call the correct interceptors.
-func RegisterPingServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PingServiceClient) error {
-
- mux.Handle("GET", pattern_PingService_Ping_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.ping.PingService/Ping", runtime.WithHTTPPathPattern("/ping/v1/ping"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_PingService_Ping_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_PingService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_PingService_Ping_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0}, []string{"ping", "v1"}, ""))
-)
-
-var (
- forward_PingService_Ping_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/ping/v1/ping.platform.proto b/proto/platform/ping/v1/ping.platform.proto
deleted file mode 100644
index 86f8d93d..00000000
--- a/proto/platform/ping/v1/ping.platform.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/ping/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.ping.v1";
-option java_outer_classname = "PlatformPingProto";
-
-package chainguard.platform.ping;
-
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-
-service PingService {
- rpc Ping(PingRequest) returns (Response) {
- option (google.api.http) = {
- get: "/ping/v1/ping"
- };
- option (chainguard.annotations.iam) = {
- // This method doesn't require authentication.
- disabled: {}
- };
- }
-}
-
-message PingRequest {}
-
-message Response {
- string response = 1;
-}
diff --git a/proto/platform/ping/v1/ping.platform_grpc.pb.go b/proto/platform/ping/v1/ping.platform_grpc.pb.go
deleted file mode 100644
index 8367718d..00000000
--- a/proto/platform/ping/v1/ping.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: ping.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- PingService_Ping_FullMethodName = "/chainguard.platform.ping.PingService/Ping"
-)
-
-// PingServiceClient is the client API for PingService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type PingServiceClient interface {
- Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Response, error)
-}
-
-type pingServiceClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewPingServiceClient(cc grpc.ClientConnInterface) PingServiceClient {
- return &pingServiceClient{cc}
-}
-
-func (c *pingServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Response, error) {
- out := new(Response)
- err := c.cc.Invoke(ctx, PingService_Ping_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// PingServiceServer is the server API for PingService service.
-// All implementations must embed UnimplementedPingServiceServer
-// for forward compatibility
-type PingServiceServer interface {
- Ping(context.Context, *PingRequest) (*Response, error)
- mustEmbedUnimplementedPingServiceServer()
-}
-
-// UnimplementedPingServiceServer must be embedded to have forward compatible implementations.
-type UnimplementedPingServiceServer struct {
-}
-
-func (UnimplementedPingServiceServer) Ping(context.Context, *PingRequest) (*Response, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented")
-}
-func (UnimplementedPingServiceServer) mustEmbedUnimplementedPingServiceServer() {}
-
-// UnsafePingServiceServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to PingServiceServer will
-// result in compilation errors.
-type UnsafePingServiceServer interface {
- mustEmbedUnimplementedPingServiceServer()
-}
-
-func RegisterPingServiceServer(s grpc.ServiceRegistrar, srv PingServiceServer) {
- s.RegisterService(&PingService_ServiceDesc, srv)
-}
-
-func _PingService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(PingRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PingServiceServer).Ping(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: PingService_Ping_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PingServiceServer).Ping(ctx, req.(*PingRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// PingService_ServiceDesc is the grpc.ServiceDesc for PingService service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var PingService_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.ping.PingService",
- HandlerType: (*PingServiceServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Ping",
- Handler: _PingService_Ping_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "ping.platform.proto",
-}
diff --git a/proto/platform/ping/v1/test/ping.go b/proto/platform/ping/v1/test/ping.go
deleted file mode 100644
index e91d6763..00000000
--- a/proto/platform/ping/v1/test/ping.go
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "google.golang.org/grpc"
-
- ping "chainguard.dev/sdk/proto/platform/ping/v1"
-)
-
-var _ ping.Clients = (*MockPingServiceClients)(nil)
-
-type MockPingServiceClients struct {
- OnClose error
-
- PingServiceClient MockPingServiceClient
-}
-
-func (m MockPingServiceClients) Ping() ping.PingServiceClient {
- return &m.PingServiceClient
-}
-
-func (m MockPingServiceClients) Close() error {
- return m.OnClose
-}
-
-var _ ping.PingServiceClient = (*MockPingServiceClient)(nil)
-
-type MockPingServiceClient struct {
- ping.PingServiceClient
-
- OnPing Ping
-}
-
-type Ping struct {
- Given *ping.PingRequest
- Response *ping.Response
- Error error
-}
-
-func (m MockPingServiceClient) Ping(_ context.Context, _ *ping.PingRequest, _ ...grpc.CallOption) (*ping.Response, error) {
- if m.OnPing.Given == nil {
- return nil, fmt.Errorf("OnPing.Given defined to be %v", m.OnPing.Given)
- }
- return &ping.Response{}, nil
-}
diff --git a/proto/platform/registry/v1/clients.go b/proto/platform/registry/v1/clients.go
deleted file mode 100644
index 4b892a88..00000000
--- a/proto/platform/registry/v1/clients.go
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Clients interface {
- Registry() RegistryClient
-
- Close() error
-}
-
-func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
- uri, err := url.Parse(addr)
- if err != nil {
- return nil, fmt.Errorf("failed to parse tenant service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*uri)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("registry.NewClients: failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- registry: NewRegistryClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- registry: NewRegistryClient(conn),
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- registry RegistryClient
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) Registry() RegistryClient {
- return c.registry
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/registry/v1/doc.go b/proto/platform/registry/v1/doc.go
deleted file mode 100644
index d7b8247f..00000000
--- a/proto/platform/registry/v1/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing Registry interactions.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. -I ../../tenant/v1 --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. registry.platform.proto
-package v1
diff --git a/proto/platform/registry/v1/registry.platform.event.go b/proto/platform/registry/v1/registry.platform.event.go
deleted file mode 100644
index 78043833..00000000
--- a/proto/platform/registry/v1/registry.platform.event.go
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2024 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Repo) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return x.GetId(), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Repo) CloudEventsSubject() string {
- return x.GetId()
-}
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
deleted file mode 100644
index fc59a93b..00000000
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ /dev/null
@@ -1,4240 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: registry.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- v11 "chainguard.dev/sdk/proto/platform/tenant/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type CatalogTier int32
-
-const (
- CatalogTier_UNKNOWN CatalogTier = 0
- CatalogTier_FREE CatalogTier = 1
- CatalogTier_STANDARD CatalogTier = 2
- CatalogTier_PREMIUM CatalogTier = 3
-)
-
-// Enum value maps for CatalogTier.
-var (
- CatalogTier_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "FREE",
- 2: "STANDARD",
- 3: "PREMIUM",
- }
- CatalogTier_value = map[string]int32{
- "UNKNOWN": 0,
- "FREE": 1,
- "STANDARD": 2,
- "PREMIUM": 3,
- }
-)
-
-func (x CatalogTier) Enum() *CatalogTier {
- p := new(CatalogTier)
- *p = x
- return p
-}
-
-func (x CatalogTier) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CatalogTier) Descriptor() protoreflect.EnumDescriptor {
- return file_registry_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (CatalogTier) Type() protoreflect.EnumType {
- return &file_registry_platform_proto_enumTypes[0]
-}
-
-func (x CatalogTier) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use CatalogTier.Descriptor instead.
-func (CatalogTier) EnumDescriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{0}
-}
-
-type Repo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the identifier of this specific repository.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name is the human-readable name of the repository.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // catalog_tier is the catalog tier this repository belongs to.
- CatalogTier CatalogTier `protobuf:"varint,3,opt,name=catalog_tier,json=catalogTier,proto3,enum=chainguard.platform.registry.CatalogTier" json:"catalog_tier,omitempty"`
- // bundles is a list of tags/labels that allow us to group repositories to each other for sales purposes.
- Bundles []string `protobuf:"bytes,4,rep,name=bundles,proto3" json:"bundles,omitempty"`
- // readme is raw Markdown file contents describing the repo.
- Readme string `protobuf:"bytes,5,opt,name=readme,proto3" json:"readme,omitempty"`
- // (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
- // NOTE: This property can only be set by Chainguard.
- // Note: the json_name defaults to "syncConfig" which causes our eventing
- // system to not work properly (since the protobuf name is "sync_config")
- SyncConfig *SyncConfig `protobuf:"bytes,6,opt,name=sync_config,proto3" json:"sync_config,omitempty"`
-}
-
-func (x *Repo) Reset() {
- *x = Repo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Repo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Repo) ProtoMessage() {}
-
-func (x *Repo) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Repo.ProtoReflect.Descriptor instead.
-func (*Repo) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Repo) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Repo) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Repo) GetCatalogTier() CatalogTier {
- if x != nil {
- return x.CatalogTier
- }
- return CatalogTier_UNKNOWN
-}
-
-func (x *Repo) GetBundles() []string {
- if x != nil {
- return x.Bundles
- }
- return nil
-}
-
-func (x *Repo) GetReadme() string {
- if x != nil {
- return x.Readme
- }
- return ""
-}
-
-func (x *Repo) GetSyncConfig() *SyncConfig {
- if x != nil {
- return x.SyncConfig
- }
- return nil
-}
-
-type SyncConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Repo ID to sync from.
- Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
- // Controls whether exported tags will be uniquely labeled.
- UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
- // When the catalog syncer should stop syncing from the source repository.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
-}
-
-func (x *SyncConfig) Reset() {
- *x = SyncConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SyncConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SyncConfig) ProtoMessage() {}
-
-func (x *SyncConfig) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SyncConfig.ProtoReflect.Descriptor instead.
-func (*SyncConfig) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *SyncConfig) GetSource() string {
- if x != nil {
- return x.Source
- }
- return ""
-}
-
-func (x *SyncConfig) GetUniqueTags() bool {
- if x != nil {
- return x.UniqueTags
- }
- return false
-}
-
-func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
-type CreateRepoRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- Repo *Repo `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
-}
-
-func (x *CreateRepoRequest) Reset() {
- *x = CreateRepoRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateRepoRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateRepoRequest) ProtoMessage() {}
-
-func (x *CreateRepoRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateRepoRequest.ProtoReflect.Descriptor instead.
-func (*CreateRepoRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CreateRepoRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateRepoRequest) GetRepo() *Repo {
- if x != nil {
- return x.Repo
- }
- return nil
-}
-
-type DeleteRepoRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ID, UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteRepoRequest) Reset() {
- *x = DeleteRepoRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteRepoRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteRepoRequest) ProtoMessage() {}
-
-func (x *DeleteRepoRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteRepoRequest.ProtoReflect.Descriptor instead.
-func (*DeleteRepoRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *DeleteRepoRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type RepoList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Repo `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RepoList) Reset() {
- *x = RepoList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RepoList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RepoList) ProtoMessage() {}
-
-func (x *RepoList) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RepoList.ProtoReflect.Descriptor instead.
-func (*RepoList) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *RepoList) GetItems() []*Repo {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type RepoFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // name is the exact name of the record.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // id is the identifier of this specific repository.
- Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *RepoFilter) Reset() {
- *x = RepoFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RepoFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RepoFilter) ProtoMessage() {}
-
-func (x *RepoFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RepoFilter.ProtoReflect.Descriptor instead.
-func (*RepoFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *RepoFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *RepoFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *RepoFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type CreateTagRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- Tag *Tag `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"`
-}
-
-func (x *CreateTagRequest) Reset() {
- *x = CreateTagRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateTagRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateTagRequest) ProtoMessage() {}
-
-func (x *CreateTagRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateTagRequest.ProtoReflect.Descriptor instead.
-func (*CreateTagRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CreateTagRequest) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *CreateTagRequest) GetTag() *Tag {
- if x != nil {
- return x.Tag
- }
- return nil
-}
-
-type DeleteTagRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ID, UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteTagRequest) Reset() {
- *x = DeleteTagRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteTagRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteTagRequest) ProtoMessage() {}
-
-func (x *DeleteTagRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteTagRequest.ProtoReflect.Descriptor instead.
-func (*DeleteTagRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *DeleteTagRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type Tag struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, identifier of this Tag, a UIDP under a Repo.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, the unique name of the Tag.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // digest, the digest of the manifest with this tag.
- Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"`
- // last time this tag was updated.
- LastUpdated *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"`
- // deprecated, true if the tag is deprecated.
- Deprecated bool `protobuf:"varint,5,opt,name=deprecated,proto3" json:"deprecated,omitempty"`
- // bundles is a list of tags/labels for sales purposes.
- Bundles []string `protobuf:"bytes,6,rep,name=bundles,proto3" json:"bundles,omitempty"`
-}
-
-func (x *Tag) Reset() {
- *x = Tag{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Tag) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Tag) ProtoMessage() {}
-
-func (x *Tag) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
-func (*Tag) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Tag) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Tag) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Tag) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-func (x *Tag) GetLastUpdated() *timestamppb.Timestamp {
- if x != nil {
- return x.LastUpdated
- }
- return nil
-}
-
-func (x *Tag) GetDeprecated() bool {
- if x != nil {
- return x.Deprecated
- }
- return false
-}
-
-func (x *Tag) GetBundles() []string {
- if x != nil {
- return x.Bundles
- }
- return nil
-}
-
-type TagFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // The unique name of the Tag to list.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // The timestamp after which returned records were updated.
- UpdatedSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_since,json=updatedSince,proto3" json:"updated_since,omitempty"`
- // Exclude tags of the form "sha256-*".
- ExcludeReferrers bool `protobuf:"varint,6,opt,name=exclude_referrers,json=excludeReferrers,proto3" json:"exclude_referrers,omitempty"`
- // Exclude tags of the form "*-20yymmdd".
- ExcludeDates bool `protobuf:"varint,7,opt,name=exclude_dates,json=excludeDates,proto3" json:"exclude_dates,omitempty"`
- // Exclude tags of the form "*-r[0-9]+".
- ExcludeEpochs bool `protobuf:"varint,8,opt,name=exclude_epochs,json=excludeEpochs,proto3" json:"exclude_epochs,omitempty"`
- Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *TagFilter) Reset() {
- *x = TagFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TagFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TagFilter) ProtoMessage() {}
-
-func (x *TagFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TagFilter.ProtoReflect.Descriptor instead.
-func (*TagFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *TagFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *TagFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *TagFilter) GetUpdatedSince() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedSince
- }
- return nil
-}
-
-func (x *TagFilter) GetExcludeReferrers() bool {
- if x != nil {
- return x.ExcludeReferrers
- }
- return false
-}
-
-func (x *TagFilter) GetExcludeDates() bool {
- if x != nil {
- return x.ExcludeDates
- }
- return false
-}
-
-func (x *TagFilter) GetExcludeEpochs() bool {
- if x != nil {
- return x.ExcludeEpochs
- }
- return false
-}
-
-func (x *TagFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type TagList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Tag `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *TagList) Reset() {
- *x = TagList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TagList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TagList) ProtoMessage() {}
-
-func (x *TagList) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TagList.ProtoReflect.Descriptor instead.
-func (*TagList) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *TagList) GetItems() []*Tag {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type TagHistoryFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // tag UIDP to list history for.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- Start *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start,proto3" json:"start,omitempty"`
- End *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end,proto3" json:"end,omitempty"`
-}
-
-func (x *TagHistoryFilter) Reset() {
- *x = TagHistoryFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TagHistoryFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TagHistoryFilter) ProtoMessage() {}
-
-func (x *TagHistoryFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TagHistoryFilter.ProtoReflect.Descriptor instead.
-func (*TagHistoryFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *TagHistoryFilter) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *TagHistoryFilter) GetStart() *timestamppb.Timestamp {
- if x != nil {
- return x.Start
- }
- return nil
-}
-
-func (x *TagHistoryFilter) GetEnd() *timestamppb.Timestamp {
- if x != nil {
- return x.End
- }
- return nil
-}
-
-type TagHistoryList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*TagHistory `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *TagHistoryList) Reset() {
- *x = TagHistoryList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TagHistoryList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TagHistoryList) ProtoMessage() {}
-
-func (x *TagHistoryList) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TagHistoryList.ProtoReflect.Descriptor instead.
-func (*TagHistoryList) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *TagHistoryList) GetItems() []*TagHistory {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type TagHistory struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- UpdateTimestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=update_timestamp,json=updateTimestamp,proto3" json:"update_timestamp,omitempty"`
- Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
-}
-
-func (x *TagHistory) Reset() {
- *x = TagHistory{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *TagHistory) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TagHistory) ProtoMessage() {}
-
-func (x *TagHistory) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use TagHistory.ProtoReflect.Descriptor instead.
-func (*TagHistory) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *TagHistory) GetUpdateTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdateTimestamp
- }
- return nil
-}
-
-func (x *TagHistory) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-type DiffImageResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Packages *PackagesDiff `protobuf:"bytes,1,opt,name=packages,proto3" json:"packages,omitempty"`
- Vulnerabilities *VulnerabilitiesDiff `protobuf:"bytes,2,opt,name=vulnerabilities,proto3" json:"vulnerabilities,omitempty"`
- Config *ImageConfigDiff `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
- // warnings is a list of warning messages to return to the requesting client.
- // Warning messages describe a problem the client making the DiffImageRequest should correct or be aware of.
- // Warnings over 256 characters and large numbers of warnings may be truncated.
- Warnings []string `protobuf:"bytes,5,rep,name=warnings,proto3" json:"warnings,omitempty"`
-}
-
-func (x *DiffImageResponse) Reset() {
- *x = DiffImageResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DiffImageResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DiffImageResponse) ProtoMessage() {}
-
-func (x *DiffImageResponse) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DiffImageResponse.ProtoReflect.Descriptor instead.
-func (*DiffImageResponse) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *DiffImageResponse) GetPackages() *PackagesDiff {
- if x != nil {
- return x.Packages
- }
- return nil
-}
-
-func (x *DiffImageResponse) GetVulnerabilities() *VulnerabilitiesDiff {
- if x != nil {
- return x.Vulnerabilities
- }
- return nil
-}
-
-func (x *DiffImageResponse) GetConfig() *ImageConfigDiff {
- if x != nil {
- return x.Config
- }
- return nil
-}
-
-func (x *DiffImageResponse) GetWarnings() []string {
- if x != nil {
- return x.Warnings
- }
- return nil
-}
-
-type ImageConfigDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Changed *ChangedImageConfig `protobuf:"bytes,1,opt,name=changed,proto3" json:"changed,omitempty"`
-}
-
-func (x *ImageConfigDiff) Reset() {
- *x = ImageConfigDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ImageConfigDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImageConfigDiff) ProtoMessage() {}
-
-func (x *ImageConfigDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImageConfigDiff.ProtoReflect.Descriptor instead.
-func (*ImageConfigDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *ImageConfigDiff) GetChanged() *ChangedImageConfig {
- if x != nil {
- return x.Changed
- }
- return nil
-}
-
-type ChangedImageConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- ChangedUser *ChangedImageConfig_ChangedUser `protobuf:"bytes,1,opt,name=changedUser,proto3" json:"changedUser,omitempty"`
- ChangedWorkingDir *ChangedImageConfig_ChangedWorkingDir `protobuf:"bytes,2,opt,name=changedWorkingDir,proto3" json:"changedWorkingDir,omitempty"`
- Entrypoints *ChangedImageConfig_EntrypointDiff `protobuf:"bytes,3,opt,name=entrypoints,proto3" json:"entrypoints,omitempty"`
- Envs *ChangedImageConfig_EnvDiff `protobuf:"bytes,4,opt,name=envs,proto3" json:"envs,omitempty"`
- Cmds *ChangedImageConfig_CmdDiff `protobuf:"bytes,5,opt,name=cmds,proto3" json:"cmds,omitempty"`
- ChangedStopSignal *ChangedImageConfig_ChangedStopSignal `protobuf:"bytes,6,opt,name=changedStopSignal,proto3" json:"changedStopSignal,omitempty"`
- Volumes *ChangedImageConfig_VolumeDiff `protobuf:"bytes,7,opt,name=volumes,proto3" json:"volumes,omitempty"`
-}
-
-func (x *ChangedImageConfig) Reset() {
- *x = ChangedImageConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig) ProtoMessage() {}
-
-func (x *ChangedImageConfig) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *ChangedImageConfig) GetChangedUser() *ChangedImageConfig_ChangedUser {
- if x != nil {
- return x.ChangedUser
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetChangedWorkingDir() *ChangedImageConfig_ChangedWorkingDir {
- if x != nil {
- return x.ChangedWorkingDir
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetEntrypoints() *ChangedImageConfig_EntrypointDiff {
- if x != nil {
- return x.Entrypoints
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetEnvs() *ChangedImageConfig_EnvDiff {
- if x != nil {
- return x.Envs
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetCmds() *ChangedImageConfig_CmdDiff {
- if x != nil {
- return x.Cmds
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetChangedStopSignal() *ChangedImageConfig_ChangedStopSignal {
- if x != nil {
- return x.ChangedStopSignal
- }
- return nil
-}
-
-func (x *ChangedImageConfig) GetVolumes() *ChangedImageConfig_VolumeDiff {
- if x != nil {
- return x.Volumes
- }
- return nil
-}
-
-type ImageConfig struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // User defines the username or UID which the process in the container should run as.
- User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
- ExposedPorts map[string]*ImageConfig_ExposedPort `protobuf:"bytes,2,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Env is a list of environment variables to be used in a container.
- Env []string `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"`
- // Entrypoint defines a list of arguments to use as the command to execute when the container starts.
- Entrypoint []string `protobuf:"bytes,4,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"`
- // Cmd defines the default arguments to the entrypoint of the container.
- Cmd []string `protobuf:"bytes,5,rep,name=cmd,proto3" json:"cmd,omitempty"`
- // Volumes is a set of directories describing where the process is likely write data specific to a container instance.
- Volumes map[string]*ImageConfig_Volume `protobuf:"bytes,6,rep,name=volumes,proto3" json:"volumes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // WorkingDir sets the current working directory of the entrypoint process in the container.
- WorkingDir string `protobuf:"bytes,7,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"`
- // Labels contains arbitrary metadata for the container.
- Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // StopSignal contains the system call signal that will be sent to the container to exit.
- StopSignal string `protobuf:"bytes,9,opt,name=stop_signal,json=stopSignal,proto3" json:"stop_signal,omitempty"`
-}
-
-func (x *ImageConfig) Reset() {
- *x = ImageConfig{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ImageConfig) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImageConfig) ProtoMessage() {}
-
-func (x *ImageConfig) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImageConfig.ProtoReflect.Descriptor instead.
-func (*ImageConfig) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *ImageConfig) GetUser() string {
- if x != nil {
- return x.User
- }
- return ""
-}
-
-func (x *ImageConfig) GetExposedPorts() map[string]*ImageConfig_ExposedPort {
- if x != nil {
- return x.ExposedPorts
- }
- return nil
-}
-
-func (x *ImageConfig) GetEnv() []string {
- if x != nil {
- return x.Env
- }
- return nil
-}
-
-func (x *ImageConfig) GetEntrypoint() []string {
- if x != nil {
- return x.Entrypoint
- }
- return nil
-}
-
-func (x *ImageConfig) GetCmd() []string {
- if x != nil {
- return x.Cmd
- }
- return nil
-}
-
-func (x *ImageConfig) GetVolumes() map[string]*ImageConfig_Volume {
- if x != nil {
- return x.Volumes
- }
- return nil
-}
-
-func (x *ImageConfig) GetWorkingDir() string {
- if x != nil {
- return x.WorkingDir
- }
- return ""
-}
-
-func (x *ImageConfig) GetLabels() map[string]string {
- if x != nil {
- return x.Labels
- }
- return nil
-}
-
-func (x *ImageConfig) GetStopSignal() string {
- if x != nil {
- return x.StopSignal
- }
- return ""
-}
-
-type PackagesDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added []*PackageReference `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
- Removed []*PackageReference `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
- Changed []*PackagesDiff_ChangedPackageReference `protobuf:"bytes,3,rep,name=changed,proto3" json:"changed,omitempty"`
-}
-
-func (x *PackagesDiff) Reset() {
- *x = PackagesDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PackagesDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PackagesDiff) ProtoMessage() {}
-
-func (x *PackagesDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PackagesDiff.ProtoReflect.Descriptor instead.
-func (*PackagesDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *PackagesDiff) GetAdded() []*PackageReference {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *PackagesDiff) GetRemoved() []*PackageReference {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-func (x *PackagesDiff) GetChanged() []*PackagesDiff_ChangedPackageReference {
- if x != nil {
- return x.Changed
- }
- return nil
-}
-
-type VersionReference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
- Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"`
-}
-
-func (x *VersionReference) Reset() {
- *x = VersionReference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[19]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VersionReference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VersionReference) ProtoMessage() {}
-
-func (x *VersionReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[19]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VersionReference.ProtoReflect.Descriptor instead.
-func (*VersionReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *VersionReference) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *VersionReference) GetReference() string {
- if x != nil {
- return x.Reference
- }
- return ""
-}
-
-// PackageReference is a reference to a package, containing minimal information to identify it.
-type PackageReference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
- Reference string `protobuf:"bytes,3,opt,name=reference,proto3" json:"reference,omitempty"`
-}
-
-func (x *PackageReference) Reset() {
- *x = PackageReference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PackageReference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PackageReference) ProtoMessage() {}
-
-func (x *PackageReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PackageReference.ProtoReflect.Descriptor instead.
-func (*PackageReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *PackageReference) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *PackageReference) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *PackageReference) GetReference() string {
- if x != nil {
- return x.Reference
- }
- return ""
-}
-
-type VulnerabilitiesDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added []*VulnerabilityReference `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
- Removed []*VulnerabilityReference `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
- Metadata []*ScannerMetadata `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty"`
-}
-
-func (x *VulnerabilitiesDiff) Reset() {
- *x = VulnerabilitiesDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilitiesDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilitiesDiff) ProtoMessage() {}
-
-func (x *VulnerabilitiesDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilitiesDiff.ProtoReflect.Descriptor instead.
-func (*VulnerabilitiesDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *VulnerabilitiesDiff) GetAdded() []*VulnerabilityReference {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *VulnerabilitiesDiff) GetRemoved() []*VulnerabilityReference {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-func (x *VulnerabilitiesDiff) GetMetadata() []*ScannerMetadata {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-type ScannerMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
- Scanner *v11.Scanner `protobuf:"bytes,2,opt,name=scanner,proto3" json:"scanner,omitempty"`
- VulnerabilityDbLastBuildTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=vulnerability_db_last_build_time,json=vulnerabilityDbLastBuildTime,proto3" json:"vulnerability_db_last_build_time,omitempty"`
- VulnerabilityDbSchemaVersion string `protobuf:"bytes,4,opt,name=vulnerability_db_schema_version,json=vulnerabilityDbSchemaVersion,proto3" json:"vulnerability_db_schema_version,omitempty"`
-}
-
-func (x *ScannerMetadata) Reset() {
- *x = ScannerMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ScannerMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ScannerMetadata) ProtoMessage() {}
-
-func (x *ScannerMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[22]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ScannerMetadata.ProtoReflect.Descriptor instead.
-func (*ScannerMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *ScannerMetadata) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-func (x *ScannerMetadata) GetScanner() *v11.Scanner {
- if x != nil {
- return x.Scanner
- }
- return nil
-}
-
-func (x *ScannerMetadata) GetVulnerabilityDbLastBuildTime() *timestamppb.Timestamp {
- if x != nil {
- return x.VulnerabilityDbLastBuildTime
- }
- return nil
-}
-
-func (x *ScannerMetadata) GetVulnerabilityDbSchemaVersion() string {
- if x != nil {
- return x.VulnerabilityDbSchemaVersion
- }
- return ""
-}
-
-// VulnerabilityReference is a reference to a vulnerability, containing minimal information to identify it.
-type VulnerabilityReference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"`
- Severity string `protobuf:"bytes,3,opt,name=severity,proto3" json:"severity,omitempty"`
-}
-
-func (x *VulnerabilityReference) Reset() {
- *x = VulnerabilityReference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityReference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityReference) ProtoMessage() {}
-
-func (x *VulnerabilityReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityReference.ProtoReflect.Descriptor instead.
-func (*VulnerabilityReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *VulnerabilityReference) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnerabilityReference) GetReference() string {
- if x != nil {
- return x.Reference
- }
- return ""
-}
-
-func (x *VulnerabilityReference) GetSeverity() string {
- if x != nil {
- return x.Severity
- }
- return ""
-}
-
-// DiffImageRequests are used to request a diff between two images.
-type DiffImageRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The UIDP of the image repo to diff against.
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- FromDigest string `protobuf:"bytes,2,opt,name=from_digest,json=fromDigest,proto3" json:"from_digest,omitempty"`
- ToDigest string `protobuf:"bytes,3,opt,name=to_digest,json=toDigest,proto3" json:"to_digest,omitempty"`
-}
-
-func (x *DiffImageRequest) Reset() {
- *x = DiffImageRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DiffImageRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DiffImageRequest) ProtoMessage() {}
-
-func (x *DiffImageRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[24]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DiffImageRequest.ProtoReflect.Descriptor instead.
-func (*DiffImageRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *DiffImageRequest) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *DiffImageRequest) GetFromDigest() string {
- if x != nil {
- return x.FromDigest
- }
- return ""
-}
-
-func (x *DiffImageRequest) GetToDigest() string {
- if x != nil {
- return x.ToDigest
- }
- return ""
-}
-
-type SbomRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The UIDP of the image repo to get an SBOM for.
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- // The digest of the image to get an SBOM for.
- Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
-}
-
-func (x *SbomRequest) Reset() {
- *x = SbomRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SbomRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SbomRequest) ProtoMessage() {}
-
-func (x *SbomRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SbomRequest.ProtoReflect.Descriptor instead.
-func (*SbomRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *SbomRequest) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *SbomRequest) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-type ImageConfigRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The UIDP of the image repo to get config for.
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- // The digest of the image to get config for.
- Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
- // The architecture to get config for.
- Arch string `protobuf:"bytes,3,opt,name=arch,proto3" json:"arch,omitempty"`
-}
-
-func (x *ImageConfigRequest) Reset() {
- *x = ImageConfigRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[26]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ImageConfigRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImageConfigRequest) ProtoMessage() {}
-
-func (x *ImageConfigRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[26]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImageConfigRequest.ProtoReflect.Descriptor instead.
-func (*ImageConfigRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *ImageConfigRequest) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *ImageConfigRequest) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-func (x *ImageConfigRequest) GetArch() string {
- if x != nil {
- return x.Arch
- }
- return ""
-}
-
-type VulnReportRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The UIDP of the image repo to get a VulnReport for.
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- // The digest of the image to get a VulnReport for.
- Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
-}
-
-func (x *VulnReportRequest) Reset() {
- *x = VulnReportRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[27]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnReportRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnReportRequest) ProtoMessage() {}
-
-func (x *VulnReportRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[27]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnReportRequest.ProtoReflect.Descriptor instead.
-func (*VulnReportRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *VulnReportRequest) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *VulnReportRequest) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-type ManifestMetadataIndexFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The tag/index digest to fetch metadata for.
- Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
- // The architecture to fetch metadata for.
- Arch string `protobuf:"bytes,2,opt,name=arch,proto3" json:"arch,omitempty"`
-}
-
-func (x *ManifestMetadataIndexFilter) Reset() {
- *x = ManifestMetadataIndexFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[28]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ManifestMetadataIndexFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManifestMetadataIndexFilter) ProtoMessage() {}
-
-func (x *ManifestMetadataIndexFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[28]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ManifestMetadataIndexFilter.ProtoReflect.Descriptor instead.
-func (*ManifestMetadataIndexFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *ManifestMetadataIndexFilter) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-func (x *ManifestMetadataIndexFilter) GetArch() string {
- if x != nil {
- return x.Arch
- }
- return ""
-}
-
-type ManifestMetadataFilterEntry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Filter:
- //
- // *ManifestMetadataFilterEntry_ImageDigest
- // *ManifestMetadataFilterEntry_IndexFilter
- Filter isManifestMetadataFilterEntry_Filter `protobuf_oneof:"filter"`
-}
-
-func (x *ManifestMetadataFilterEntry) Reset() {
- *x = ManifestMetadataFilterEntry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[29]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ManifestMetadataFilterEntry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManifestMetadataFilterEntry) ProtoMessage() {}
-
-func (x *ManifestMetadataFilterEntry) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[29]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ManifestMetadataFilterEntry.ProtoReflect.Descriptor instead.
-func (*ManifestMetadataFilterEntry) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{29}
-}
-
-func (m *ManifestMetadataFilterEntry) GetFilter() isManifestMetadataFilterEntry_Filter {
- if m != nil {
- return m.Filter
- }
- return nil
-}
-
-func (x *ManifestMetadataFilterEntry) GetImageDigest() string {
- if x, ok := x.GetFilter().(*ManifestMetadataFilterEntry_ImageDigest); ok {
- return x.ImageDigest
- }
- return ""
-}
-
-func (x *ManifestMetadataFilterEntry) GetIndexFilter() *ManifestMetadataIndexFilter {
- if x, ok := x.GetFilter().(*ManifestMetadataFilterEntry_IndexFilter); ok {
- return x.IndexFilter
- }
- return nil
-}
-
-type isManifestMetadataFilterEntry_Filter interface {
- isManifestMetadataFilterEntry_Filter()
-}
-
-type ManifestMetadataFilterEntry_ImageDigest struct {
- // For fetching metadata for an image digest
- ImageDigest string `protobuf:"bytes,1,opt,name=image_digest,json=imageDigest,proto3,oneof"`
-}
-
-type ManifestMetadataFilterEntry_IndexFilter struct {
- // For fetching metadata for an index digest
- IndexFilter *ManifestMetadataIndexFilter `protobuf:"bytes,2,opt,name=index_filter,json=indexFilter,proto3,oneof"`
-}
-
-func (*ManifestMetadataFilterEntry_ImageDigest) isManifestMetadataFilterEntry_Filter() {}
-
-func (*ManifestMetadataFilterEntry_IndexFilter) isManifestMetadataFilterEntry_Filter() {}
-
-type ManifestMetadataFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The UIDP of the image repo that the digests belongs to.
- RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
- // List of image digests or index digest to fetch package metadata for.
- // All entries specified would be retrieved.
- Items []*ManifestMetadataFilterEntry `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *ManifestMetadataFilter) Reset() {
- *x = ManifestMetadataFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[30]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ManifestMetadataFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManifestMetadataFilter) ProtoMessage() {}
-
-func (x *ManifestMetadataFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[30]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ManifestMetadataFilter.ProtoReflect.Descriptor instead.
-func (*ManifestMetadataFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *ManifestMetadataFilter) GetRepoId() string {
- if x != nil {
- return x.RepoId
- }
- return ""
-}
-
-func (x *ManifestMetadataFilter) GetItems() []*ManifestMetadataFilterEntry {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type PkgMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // purl of package or subpackage; spec https://github.com/package-url/purl-spec
- Purl string `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"`
- // if differ from purl, it means it is a subpackage
- OriginPurl string `protobuf:"bytes,2,opt,name=origin_purl,json=originPurl,proto3" json:"origin_purl,omitempty"`
- // date when EOL, date 0-0-0 when not eol
- EolDate *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=eol_date,json=eolDate,proto3" json:"eol_date,omitempty"`
- // timestamp when package was built, date 0-0-0 when build timestamp not available
- BuildTimestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=build_timestamp,json=buildTimestamp,proto3" json:"build_timestamp,omitempty"`
- // license of package, empty if unknown
- License string `protobuf:"bytes,5,opt,name=license,proto3" json:"license,omitempty"`
-}
-
-func (x *PkgMetadata) Reset() {
- *x = PkgMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[31]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PkgMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PkgMetadata) ProtoMessage() {}
-
-func (x *PkgMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[31]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PkgMetadata.ProtoReflect.Descriptor instead.
-func (*PkgMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *PkgMetadata) GetPurl() string {
- if x != nil {
- return x.Purl
- }
- return ""
-}
-
-func (x *PkgMetadata) GetOriginPurl() string {
- if x != nil {
- return x.OriginPurl
- }
- return ""
-}
-
-func (x *PkgMetadata) GetEolDate() *timestamppb.Timestamp {
- if x != nil {
- return x.EolDate
- }
- return nil
-}
-
-func (x *PkgMetadata) GetBuildTimestamp() *timestamppb.Timestamp {
- if x != nil {
- return x.BuildTimestamp
- }
- return nil
-}
-
-func (x *PkgMetadata) GetLicense() string {
- if x != nil {
- return x.License
- }
- return ""
-}
-
-type ManifestMetadata struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Digest of image that packages are associated with.
- Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
- // List of packages that are part of image.
- PkgMetadata []*PkgMetadata `protobuf:"bytes,2,rep,name=pkg_metadata,json=pkgMetadata,proto3" json:"pkg_metadata,omitempty"`
-}
-
-func (x *ManifestMetadata) Reset() {
- *x = ManifestMetadata{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[32]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ManifestMetadata) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManifestMetadata) ProtoMessage() {}
-
-func (x *ManifestMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[32]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ManifestMetadata.ProtoReflect.Descriptor instead.
-func (*ManifestMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *ManifestMetadata) GetDigest() string {
- if x != nil {
- return x.Digest
- }
- return ""
-}
-
-func (x *ManifestMetadata) GetPkgMetadata() []*PkgMetadata {
- if x != nil {
- return x.PkgMetadata
- }
- return nil
-}
-
-type ManifestMetadataList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*ManifestMetadata `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *ManifestMetadataList) Reset() {
- *x = ManifestMetadataList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[33]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ManifestMetadataList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ManifestMetadataList) ProtoMessage() {}
-
-func (x *ManifestMetadataList) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[33]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ManifestMetadataList.ProtoReflect.Descriptor instead.
-func (*ManifestMetadataList) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *ManifestMetadataList) GetItems() []*ManifestMetadata {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type ChangedImageConfig_ChangedUser struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
- Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
-}
-
-func (x *ChangedImageConfig_ChangedUser) Reset() {
- *x = ChangedImageConfig_ChangedUser{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[34]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_ChangedUser) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_ChangedUser) ProtoMessage() {}
-
-func (x *ChangedImageConfig_ChangedUser) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[34]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_ChangedUser.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_ChangedUser) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 0}
-}
-
-func (x *ChangedImageConfig_ChangedUser) GetCurrent() string {
- if x != nil {
- return x.Current
- }
- return ""
-}
-
-func (x *ChangedImageConfig_ChangedUser) GetPrevious() string {
- if x != nil {
- return x.Previous
- }
- return ""
-}
-
-type ChangedImageConfig_ChangedWorkingDir struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
- Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
-}
-
-func (x *ChangedImageConfig_ChangedWorkingDir) Reset() {
- *x = ChangedImageConfig_ChangedWorkingDir{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[35]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_ChangedWorkingDir) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_ChangedWorkingDir) ProtoMessage() {}
-
-func (x *ChangedImageConfig_ChangedWorkingDir) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[35]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_ChangedWorkingDir.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_ChangedWorkingDir) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 1}
-}
-
-func (x *ChangedImageConfig_ChangedWorkingDir) GetCurrent() string {
- if x != nil {
- return x.Current
- }
- return ""
-}
-
-func (x *ChangedImageConfig_ChangedWorkingDir) GetPrevious() string {
- if x != nil {
- return x.Previous
- }
- return ""
-}
-
-type ChangedImageConfig_EntrypointDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
- Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
-}
-
-func (x *ChangedImageConfig_EntrypointDiff) Reset() {
- *x = ChangedImageConfig_EntrypointDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[36]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_EntrypointDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_EntrypointDiff) ProtoMessage() {}
-
-func (x *ChangedImageConfig_EntrypointDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[36]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_EntrypointDiff.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_EntrypointDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 2}
-}
-
-func (x *ChangedImageConfig_EntrypointDiff) GetAdded() []string {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *ChangedImageConfig_EntrypointDiff) GetRemoved() []string {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-type ChangedImageConfig_EnvDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
- Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
-}
-
-func (x *ChangedImageConfig_EnvDiff) Reset() {
- *x = ChangedImageConfig_EnvDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[37]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_EnvDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_EnvDiff) ProtoMessage() {}
-
-func (x *ChangedImageConfig_EnvDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[37]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_EnvDiff.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_EnvDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 3}
-}
-
-func (x *ChangedImageConfig_EnvDiff) GetAdded() []string {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *ChangedImageConfig_EnvDiff) GetRemoved() []string {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-type ChangedImageConfig_CmdDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
- Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
-}
-
-func (x *ChangedImageConfig_CmdDiff) Reset() {
- *x = ChangedImageConfig_CmdDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[38]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_CmdDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_CmdDiff) ProtoMessage() {}
-
-func (x *ChangedImageConfig_CmdDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[38]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_CmdDiff.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_CmdDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 4}
-}
-
-func (x *ChangedImageConfig_CmdDiff) GetAdded() []string {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *ChangedImageConfig_CmdDiff) GetRemoved() []string {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-type ChangedImageConfig_ChangedStopSignal struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
- Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
-}
-
-func (x *ChangedImageConfig_ChangedStopSignal) Reset() {
- *x = ChangedImageConfig_ChangedStopSignal{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[39]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_ChangedStopSignal) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_ChangedStopSignal) ProtoMessage() {}
-
-func (x *ChangedImageConfig_ChangedStopSignal) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[39]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_ChangedStopSignal.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_ChangedStopSignal) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 5}
-}
-
-func (x *ChangedImageConfig_ChangedStopSignal) GetCurrent() string {
- if x != nil {
- return x.Current
- }
- return ""
-}
-
-func (x *ChangedImageConfig_ChangedStopSignal) GetPrevious() string {
- if x != nil {
- return x.Previous
- }
- return ""
-}
-
-type ChangedImageConfig_Volume struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ChangedImageConfig_Volume) Reset() {
- *x = ChangedImageConfig_Volume{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[40]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_Volume) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_Volume) ProtoMessage() {}
-
-func (x *ChangedImageConfig_Volume) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[40]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_Volume.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_Volume) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 6}
-}
-
-type ChangedImageConfig_VolumeDiff struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Added map[string]*ChangedImageConfig_Volume `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Removed map[string]*ChangedImageConfig_Volume `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *ChangedImageConfig_VolumeDiff) Reset() {
- *x = ChangedImageConfig_VolumeDiff{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[41]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ChangedImageConfig_VolumeDiff) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChangedImageConfig_VolumeDiff) ProtoMessage() {}
-
-func (x *ChangedImageConfig_VolumeDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[41]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChangedImageConfig_VolumeDiff.ProtoReflect.Descriptor instead.
-func (*ChangedImageConfig_VolumeDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{16, 7}
-}
-
-func (x *ChangedImageConfig_VolumeDiff) GetAdded() map[string]*ChangedImageConfig_Volume {
- if x != nil {
- return x.Added
- }
- return nil
-}
-
-func (x *ChangedImageConfig_VolumeDiff) GetRemoved() map[string]*ChangedImageConfig_Volume {
- if x != nil {
- return x.Removed
- }
- return nil
-}
-
-// ExposedPorts a set of ports to expose from a container running this image.
-type ImageConfig_ExposedPort struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ImageConfig_ExposedPort) Reset() {
- *x = ImageConfig_ExposedPort{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[44]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ImageConfig_ExposedPort) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImageConfig_ExposedPort) ProtoMessage() {}
-
-func (x *ImageConfig_ExposedPort) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[44]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImageConfig_ExposedPort.ProtoReflect.Descriptor instead.
-func (*ImageConfig_ExposedPort) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{17, 0}
-}
-
-type ImageConfig_Volume struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ImageConfig_Volume) Reset() {
- *x = ImageConfig_Volume{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[46]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ImageConfig_Volume) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImageConfig_Volume) ProtoMessage() {}
-
-func (x *ImageConfig_Volume) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[46]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImageConfig_Volume.ProtoReflect.Descriptor instead.
-func (*ImageConfig_Volume) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{17, 2}
-}
-
-type PackagesDiff_ChangedPackageReference struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Current *VersionReference `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
- Previous *VersionReference `protobuf:"bytes,3,opt,name=previous,proto3" json:"previous,omitempty"`
-}
-
-func (x *PackagesDiff_ChangedPackageReference) Reset() {
- *x = PackagesDiff_ChangedPackageReference{}
- if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[49]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PackagesDiff_ChangedPackageReference) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PackagesDiff_ChangedPackageReference) ProtoMessage() {}
-
-func (x *PackagesDiff_ChangedPackageReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[49]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PackagesDiff_ChangedPackageReference.ProtoReflect.Descriptor instead.
-func (*PackagesDiff_ChangedPackageReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{18, 0}
-}
-
-func (x *PackagesDiff_ChangedPackageReference) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *PackagesDiff_ChangedPackageReference) GetCurrent() *VersionReference {
- if x != nil {
- return x.Current
- }
- return nil
-}
-
-func (x *PackagesDiff_ChangedPackageReference) GetPrevious() *VersionReference {
- if x != nil {
- return x.Previous
- }
- return nil
-}
-
-var File_registry_platform_proto protoreflect.FileDescriptor
-
-var file_registry_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
- 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x76,
- 0x75, 0x6c, 0x6e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f,
- 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0c,
- 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0b, 0x63,
- 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75,
- 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e,
- 0x64, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b,
- 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x73, 0x79, 0x6e,
- 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
- 0x1f, 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73,
- 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b,
- 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52,
- 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
- 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22,
- 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65,
- 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
- 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
- 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54,
- 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
- 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63,
- 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64,
- 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64,
- 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
- 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
- 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a,
- 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65,
- 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08,
- 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65,
- 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66,
- 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c,
- 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
- 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04,
- 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64,
- 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53,
- 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73,
- 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a,
- 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69,
- 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69,
- 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72,
- 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66,
- 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65,
- 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c,
- 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
- 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
- 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12,
- 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a,
- 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
- 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
- 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
- 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a,
- 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12,
- 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e,
- 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
- 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
- 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
- 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b,
- 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c,
- 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69,
- 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70,
- 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65,
- 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f,
- 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a,
- 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
- 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66,
- 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a,
- 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64,
- 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05,
- 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
- 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07,
- 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e,
- 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76,
- 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f,
- 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a,
- 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
- 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
- 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a,
- 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
- 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
- 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
- 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63,
- 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
- 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01,
- 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
- 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72,
- 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75,
- 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18,
- 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
- 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12,
- 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
- 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41,
- 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10,
- 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4,
- 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
- 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70,
- 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
- 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c,
- 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70,
- 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2,
- 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
- 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70,
- 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
- 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca,
- 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
- 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
- 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2,
- 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61,
- 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a,
- 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c,
- 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69,
- 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd,
- 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6,
- 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39,
- 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12,
- 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49,
- 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12,
- 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01,
- 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
- 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f,
- 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01,
- 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74,
- 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65,
- 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
- 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_registry_platform_proto_rawDescOnce sync.Once
- file_registry_platform_proto_rawDescData = file_registry_platform_proto_rawDesc
-)
-
-func file_registry_platform_proto_rawDescGZIP() []byte {
- file_registry_platform_proto_rawDescOnce.Do(func() {
- file_registry_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_registry_platform_proto_rawDescData)
- })
- return file_registry_platform_proto_rawDescData
-}
-
-var file_registry_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
-var file_registry_platform_proto_goTypes = []interface{}{
- (CatalogTier)(0), // 0: chainguard.platform.registry.CatalogTier
- (*Repo)(nil), // 1: chainguard.platform.registry.Repo
- (*SyncConfig)(nil), // 2: chainguard.platform.registry.SyncConfig
- (*CreateRepoRequest)(nil), // 3: chainguard.platform.registry.CreateRepoRequest
- (*DeleteRepoRequest)(nil), // 4: chainguard.platform.registry.DeleteRepoRequest
- (*RepoList)(nil), // 5: chainguard.platform.registry.RepoList
- (*RepoFilter)(nil), // 6: chainguard.platform.registry.RepoFilter
- (*CreateTagRequest)(nil), // 7: chainguard.platform.registry.CreateTagRequest
- (*DeleteTagRequest)(nil), // 8: chainguard.platform.registry.DeleteTagRequest
- (*Tag)(nil), // 9: chainguard.platform.registry.Tag
- (*TagFilter)(nil), // 10: chainguard.platform.registry.TagFilter
- (*TagList)(nil), // 11: chainguard.platform.registry.TagList
- (*TagHistoryFilter)(nil), // 12: chainguard.platform.registry.TagHistoryFilter
- (*TagHistoryList)(nil), // 13: chainguard.platform.registry.TagHistoryList
- (*TagHistory)(nil), // 14: chainguard.platform.registry.TagHistory
- (*DiffImageResponse)(nil), // 15: chainguard.platform.registry.DiffImageResponse
- (*ImageConfigDiff)(nil), // 16: chainguard.platform.registry.ImageConfigDiff
- (*ChangedImageConfig)(nil), // 17: chainguard.platform.registry.ChangedImageConfig
- (*ImageConfig)(nil), // 18: chainguard.platform.registry.ImageConfig
- (*PackagesDiff)(nil), // 19: chainguard.platform.registry.PackagesDiff
- (*VersionReference)(nil), // 20: chainguard.platform.registry.VersionReference
- (*PackageReference)(nil), // 21: chainguard.platform.registry.PackageReference
- (*VulnerabilitiesDiff)(nil), // 22: chainguard.platform.registry.VulnerabilitiesDiff
- (*ScannerMetadata)(nil), // 23: chainguard.platform.registry.ScannerMetadata
- (*VulnerabilityReference)(nil), // 24: chainguard.platform.registry.VulnerabilityReference
- (*DiffImageRequest)(nil), // 25: chainguard.platform.registry.DiffImageRequest
- (*SbomRequest)(nil), // 26: chainguard.platform.registry.SbomRequest
- (*ImageConfigRequest)(nil), // 27: chainguard.platform.registry.ImageConfigRequest
- (*VulnReportRequest)(nil), // 28: chainguard.platform.registry.VulnReportRequest
- (*ManifestMetadataIndexFilter)(nil), // 29: chainguard.platform.registry.ManifestMetadataIndexFilter
- (*ManifestMetadataFilterEntry)(nil), // 30: chainguard.platform.registry.ManifestMetadataFilterEntry
- (*ManifestMetadataFilter)(nil), // 31: chainguard.platform.registry.ManifestMetadataFilter
- (*PkgMetadata)(nil), // 32: chainguard.platform.registry.PkgMetadata
- (*ManifestMetadata)(nil), // 33: chainguard.platform.registry.ManifestMetadata
- (*ManifestMetadataList)(nil), // 34: chainguard.platform.registry.ManifestMetadataList
- (*ChangedImageConfig_ChangedUser)(nil), // 35: chainguard.platform.registry.ChangedImageConfig.ChangedUser
- (*ChangedImageConfig_ChangedWorkingDir)(nil), // 36: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- (*ChangedImageConfig_EntrypointDiff)(nil), // 37: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- (*ChangedImageConfig_EnvDiff)(nil), // 38: chainguard.platform.registry.ChangedImageConfig.EnvDiff
- (*ChangedImageConfig_CmdDiff)(nil), // 39: chainguard.platform.registry.ChangedImageConfig.CmdDiff
- (*ChangedImageConfig_ChangedStopSignal)(nil), // 40: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- (*ChangedImageConfig_Volume)(nil), // 41: chainguard.platform.registry.ChangedImageConfig.Volume
- (*ChangedImageConfig_VolumeDiff)(nil), // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- nil, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- nil, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- (*ImageConfig_ExposedPort)(nil), // 45: chainguard.platform.registry.ImageConfig.ExposedPort
- nil, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- (*ImageConfig_Volume)(nil), // 47: chainguard.platform.registry.ImageConfig.Volume
- nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
- nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
- (*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
- (*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
- (*emptypb.Empty)(nil), // 54: google.protobuf.Empty
- (*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
- (*v11.VulnReport)(nil), // 56: chainguard.platform.tenant.VulnReport
-}
-var file_registry_platform_proto_depIdxs = []int32{
- 0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
- 2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
- 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 65, // [65:79] is the sub-list for method output_type
- 51, // [51:65] is the sub-list for method input_type
- 51, // [51:51] is the sub-list for extension type_name
- 51, // [51:51] is the sub-list for extension extendee
- 0, // [0:51] is the sub-list for field type_name
-}
-
-func init() { file_registry_platform_proto_init() }
-func file_registry_platform_proto_init() {
- if File_registry_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_registry_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Repo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SyncConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateRepoRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteRepoRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RepoList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RepoFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateTagRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteTagRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Tag); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TagFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TagList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TagHistoryFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TagHistoryList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TagHistory); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DiffImageResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ImageConfigDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ImageConfig); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PackagesDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VersionReference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PackageReference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilitiesDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ScannerMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityReference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DiffImageRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SbomRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ImageConfigRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnReportRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataIndexFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataFilterEntry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PkgMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadata); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedUser); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EnvDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_CmdDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_Volume); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_VolumeDiff); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ImageConfig_ExposedPort); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ImageConfig_Volume); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_registry_platform_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PackagesDiff_ChangedPackageReference); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_registry_platform_proto_msgTypes[29].OneofWrappers = []interface{}{
- (*ManifestMetadataFilterEntry_ImageDigest)(nil),
- (*ManifestMetadataFilterEntry_IndexFilter)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_registry_platform_proto_rawDesc,
- NumEnums: 1,
- NumMessages: 50,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_registry_platform_proto_goTypes,
- DependencyIndexes: file_registry_platform_proto_depIdxs,
- EnumInfos: file_registry_platform_proto_enumTypes,
- MessageInfos: file_registry_platform_proto_msgTypes,
- }.Build()
- File_registry_platform_proto = out.File
- file_registry_platform_proto_rawDesc = nil
- file_registry_platform_proto_goTypes = nil
- file_registry_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/registry/v1/registry.platform.pb.gw.go b/proto/platform/registry/v1/registry.platform.pb.gw.go
deleted file mode 100644
index 612df8bf..00000000
--- a/proto/platform/registry/v1/registry.platform.pb.gw.go
+++ /dev/null
@@ -1,1659 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: registry.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Registry_CreateRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRepoRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Repo); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.CreateRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_CreateRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateRepoRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Repo); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.CreateRepo(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_UpdateRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Repo
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.UpdateRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_UpdateRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Repo
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.UpdateRepo(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_ListRepos_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Registry_ListRepos_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RepoFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListRepos_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListRepos(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_ListRepos_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RepoFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListRepos_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListRepos(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_DeleteRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRepoRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.DeleteRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_DeleteRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRepoRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.DeleteRepo(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_CreateTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateTagRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Tag); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- msg, err := client.CreateTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_CreateTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateTagRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Tag); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- msg, err := server.CreateTag(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_UpdateTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Tag
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.UpdateTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_UpdateTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Tag
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.UpdateTag(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_DeleteTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteTagRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.DeleteTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_DeleteTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteTagRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.DeleteTag(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_ListTags_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Registry_ListTags_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq TagFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTags_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListTags(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_ListTags_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq TagFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTags_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListTags(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_ListTagHistory_0 = &utilities.DoubleArray{Encoding: map[string]int{"parent_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
-
-func request_Registry_ListTagHistory_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq TagHistoryFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTagHistory_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListTagHistory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_ListTagHistory_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq TagHistoryFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTagHistory_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListTagHistory(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_DiffImage_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
-
-func request_Registry_DiffImage_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DiffImageRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_DiffImage_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.DiffImage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_DiffImage_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DiffImageRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_DiffImage_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.DiffImage(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_GetSbom_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SbomRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- msg, err := client.GetSbom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_GetSbom_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SbomRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- msg, err := server.GetSbom(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_GetImageConfig_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0, "digest": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
-)
-
-func request_Registry_GetImageConfig_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ImageConfigRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_GetImageConfig_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.GetImageConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_GetImageConfig_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ImageConfigRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_GetImageConfig_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.GetImageConfig(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Registry_GetVulnReport_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnReportRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- msg, err := client.GetVulnReport(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_GetVulnReport_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnReportRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- val, ok = pathParams["digest"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
- }
-
- protoReq.Digest, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
- }
-
- msg, err := server.GetVulnReport(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Registry_ListManifestMetadata_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
-
-func request_Registry_ListManifestMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ManifestMetadataFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListManifestMetadata_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.ListManifestMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Registry_ListManifestMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ManifestMetadataFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["repo_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
- }
-
- protoReq.RepoId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListManifestMetadata_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.ListManifestMetadata(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterRegistryHandlerServer registers the http handlers for service Registry to "mux".
-// UnaryRPC :call RegistryServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRegistryHandlerFromEndpoint instead.
-func RegisterRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RegistryServer) error {
-
- mux.Handle("POST", pattern_Registry_CreateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_CreateRepo_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Registry_UpdateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_UpdateRepo_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_UpdateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListRepos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListRepos", runtime.WithHTTPPathPattern("/registry/v1/repos"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_ListRepos_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Registry_DeleteRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_DeleteRepo_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Registry_CreateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{repo_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_CreateTag_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_CreateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Registry_UpdateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_UpdateTag_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_UpdateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Registry_DeleteTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_DeleteTag_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DeleteTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTags", runtime.WithHTTPPathPattern("/registry/v1/tags"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_ListTags_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListTags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListTagHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTagHistory", runtime.WithHTTPPathPattern("/registry/v1/tags/{parent_id=**}/history"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_ListTagHistory_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListTagHistory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_DiffImage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DiffImage", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/diff"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_DiffImage_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DiffImage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetSbom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetSbom", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_GetSbom_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetSbom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetImageConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetImageConfig", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_GetImageConfig_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetImageConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetVulnReport", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_GetVulnReport_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetVulnReport_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListManifestMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListManifestMetadata", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/manifestmetdata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Registry_ListManifestMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListManifestMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterRegistryHandlerFromEndpoint is same as RegisterRegistryHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterRegistryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterRegistryHandler(ctx, mux, conn)
-}
-
-// RegisterRegistryHandler registers the http handlers for service Registry to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterRegistryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterRegistryHandlerClient(ctx, mux, NewRegistryClient(conn))
-}
-
-// RegisterRegistryHandlerClient registers the http handlers for service Registry
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RegistryClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RegistryClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "RegistryClient" to call the correct interceptors.
-func RegisterRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RegistryClient) error {
-
- mux.Handle("POST", pattern_Registry_CreateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_CreateRepo_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Registry_UpdateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_UpdateRepo_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_UpdateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListRepos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListRepos", runtime.WithHTTPPathPattern("/registry/v1/repos"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_ListRepos_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Registry_DeleteRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_DeleteRepo_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Registry_CreateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{repo_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_CreateTag_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_CreateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Registry_UpdateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_UpdateTag_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_UpdateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Registry_DeleteTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_DeleteTag_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DeleteTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTags", runtime.WithHTTPPathPattern("/registry/v1/tags"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_ListTags_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListTags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListTagHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTagHistory", runtime.WithHTTPPathPattern("/registry/v1/tags/{parent_id=**}/history"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_ListTagHistory_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListTagHistory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_DiffImage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DiffImage", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/diff"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_DiffImage_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_DiffImage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetSbom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetSbom", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_GetSbom_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetSbom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetImageConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetImageConfig", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_GetImageConfig_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetImageConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetVulnReport", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_GetVulnReport_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_GetVulnReport_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Registry_ListManifestMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListManifestMetadata", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/manifestmetdata"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Registry_ListManifestMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Registry_ListManifestMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Registry_CreateRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "parent_id"}, ""))
-
- pattern_Registry_UpdateRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "id"}, ""))
-
- pattern_Registry_ListRepos_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"registry", "v1", "repos"}, ""))
-
- pattern_Registry_DeleteRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "id"}, ""))
-
- pattern_Registry_CreateTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "repo_id"}, ""))
-
- pattern_Registry_UpdateTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "id"}, ""))
-
- pattern_Registry_DeleteTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "id"}, ""))
-
- pattern_Registry_ListTags_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"registry", "v1", "tags"}, ""))
-
- pattern_Registry_ListTagHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "tags", "parent_id", "history"}, ""))
-
- pattern_Registry_DiffImage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "repos", "repo_id", "diff"}, ""))
-
- pattern_Registry_GetSbom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "sbom"}, ""))
-
- pattern_Registry_GetImageConfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "imageconfig"}, ""))
-
- pattern_Registry_GetVulnReport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "vulnreport"}, ""))
-
- pattern_Registry_ListManifestMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "repos", "repo_id", "manifestmetdata"}, ""))
-)
-
-var (
- forward_Registry_CreateRepo_0 = runtime.ForwardResponseMessage
-
- forward_Registry_UpdateRepo_0 = runtime.ForwardResponseMessage
-
- forward_Registry_ListRepos_0 = runtime.ForwardResponseMessage
-
- forward_Registry_DeleteRepo_0 = runtime.ForwardResponseMessage
-
- forward_Registry_CreateTag_0 = runtime.ForwardResponseMessage
-
- forward_Registry_UpdateTag_0 = runtime.ForwardResponseMessage
-
- forward_Registry_DeleteTag_0 = runtime.ForwardResponseMessage
-
- forward_Registry_ListTags_0 = runtime.ForwardResponseMessage
-
- forward_Registry_ListTagHistory_0 = runtime.ForwardResponseMessage
-
- forward_Registry_DiffImage_0 = runtime.ForwardResponseMessage
-
- forward_Registry_GetSbom_0 = runtime.ForwardResponseMessage
-
- forward_Registry_GetImageConfig_0 = runtime.ForwardResponseMessage
-
- forward_Registry_GetVulnReport_0 = runtime.ForwardResponseMessage
-
- forward_Registry_ListManifestMetadata_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
deleted file mode 100644
index 6a072f7a..00000000
--- a/proto/platform/registry/v1/registry.platform.proto
+++ /dev/null
@@ -1,572 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/registry/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.registry.v1";
-option java_outer_classname = "PlatformRegistryProto";
-
-package chainguard.platform.registry;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-import "vuln.platform.proto";
-import "sbom.platform.proto";
-
-service Registry {
- rpc CreateRepo(CreateRepoRequest) returns (Repo) {
- option (google.api.http) = {
- post: "/registry/v1/repos/{parent_id=**}"
- body: "repo"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.repo.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc UpdateRepo(Repo) returns (Repo) {
- option (google.api.http) = {
- put: "/registry/v1/repos/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.repo.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc ListRepos(RepoFilter) returns (RepoList) {
- option (google.api.http) = {
- get: "/registry/v1/repos"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_LIST]
- unscoped: true
- }
- };
- }
-
- rpc DeleteRepo(DeleteRepoRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/registry/v1/repos/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.repo.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc CreateTag(CreateTagRequest) returns (Tag) {
- option (google.api.http) = {
- post: "/registry/v1/tags/{repo_id=**}"
- body: "tag"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TAG_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.tag.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc UpdateTag(Tag) returns (Tag) {
- option (google.api.http) = {
- put: "/registry/v1/tags/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TAG_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.tag.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/registry/v1/tags/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TAG_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.platform.registry.tag.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc ListTags(TagFilter) returns (TagList) {
- option (google.api.http) = {
- get: "/registry/v1/tags"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TAG_LIST]
- unscoped: true
- }
- };
- }
-
- rpc ListTagHistory(TagHistoryFilter) returns (TagHistoryList) {
- option (google.api.http) = {
- get: "/registry/v1/tags/{parent_id=**}/history"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TAG_LIST]
- }
- };
- }
-
- rpc DiffImage(DiffImageRequest) returns (DiffImageResponse) {
- option (google.api.http) = {
- get: "/registry/v1/repos/{repo_id=**}/diff"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_LIST, CAP_TENANT_VULN_REPORTS_LIST, CAP_TENANT_SBOMS_LIST]
- }
- };
- }
-
- rpc GetSbom(SbomRequest) returns (chainguard.platform.tenant.Sbom2) {
- option (google.api.http) = {
- get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_LIST, CAP_TENANT_SBOMS_LIST]
- }
- };
- }
-
- rpc GetImageConfig(ImageConfigRequest) returns (ImageConfig) {
- option (google.api.http) = {
- get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_LIST, CAP_MANIFEST_METADATA_LIST]
- }
- };
- }
-
- rpc GetVulnReport(VulnReportRequest) returns (chainguard.platform.tenant.VulnReport) {
- option (google.api.http) = {
- get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_REPO_LIST, CAP_TENANT_VULN_REPORTS_LIST]
- }
- };
- }
-
- rpc ListManifestMetadata(ManifestMetadataFilter) returns (ManifestMetadataList) {
- option (google.api.http) = {
- get: "/registry/v1/repos/{repo_id=**}/manifestmetdata"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_MANIFEST_METADATA_LIST]
- }
- };
- };
-}
-
-message Repo {
- // id is the identifier of this specific repository.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // name is the human-readable name of the repository.
- string name = 2;
-
- // catalog_tier is the catalog tier this repository belongs to.
- CatalogTier catalog_tier = 3;
-
- // bundles is a list of tags/labels that allow us to group repositories to each other for sales purposes.
- repeated string bundles = 4;
-
- // readme is raw Markdown file contents describing the repo.
- string readme = 5;
-
- // (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
- // NOTE: This property can only be set by Chainguard.
- // Note: the json_name defaults to "syncConfig" which causes our eventing
- // system to not work properly (since the protobuf name is "sync_config")
- SyncConfig sync_config = 6 [json_name="sync_config"];
-}
-
-enum CatalogTier {
- UNKNOWN = 0;
- FREE = 1;
- STANDARD = 2;
- PREMIUM = 3;
-}
-
-message SyncConfig {
- // Repo ID to sync from.
- string source = 1;
-
- // Controls whether exported tags will be uniquely labeled.
- bool unique_tags = 2;
-
- // When the catalog syncer should stop syncing from the source repository.
- google.protobuf.Timestamp expiration = 3;
-}
-
-message CreateRepoRequest {
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
- Repo repo = 2;
-}
-
-message DeleteRepoRequest {
- // ID, UID of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message RepoList {
- repeated Repo items = 1;
-}
-
-message RepoFilter {
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // name is the exact name of the record.
- string name = 2;
-
- // id is the identifier of this specific repository.
- string id = 3;
-}
-
-message CreateTagRequest {
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
- Tag tag = 2;
-}
-
-message DeleteTagRequest {
- // ID, UID of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message Tag {
- // id, identifier of this Tag, a UIDP under a Repo.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // name, the unique name of the Tag.
- string name = 2;
-
- // digest, the digest of the manifest with this tag.
- string digest = 3;
-
- // last time this tag was updated.
- google.protobuf.Timestamp last_updated = 4;
-
- // deprecated, true if the tag is deprecated.
- bool deprecated = 5;
-
- // bundles is a list of tags/labels for sales purposes.
- repeated string bundles = 6;
-}
-
-message TagFilter {
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // The unique name of the Tag to list.
- string name = 2;
-
- // The timestamp after which returned records were updated.
- google.protobuf.Timestamp updated_since = 3;
-
- // Exclude tags of the form "sha256-*".
- bool exclude_referrers = 6;
-
- // Exclude tags of the form "*-20yymmdd".
- bool exclude_dates = 7;
-
- // Exclude tags of the form "*-r[0-9]+".
- bool exclude_epochs = 8;
-
- string id = 9;
-}
-
-message TagList {
- repeated Tag items = 1;
-}
-
-message TagHistoryFilter {
- // tag UIDP to list history for.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- google.protobuf.Timestamp start = 2;
- google.protobuf.Timestamp end = 3;
-}
-
-message TagHistoryList {
- repeated TagHistory items = 1;
-}
-
-message TagHistory {
- google.protobuf.Timestamp update_timestamp = 1;
- string digest = 2;
-}
-
-message DiffImageResponse {
- PackagesDiff packages = 1;
- VulnerabilitiesDiff vulnerabilities = 2;
-
- // This field referred to the FilesDiff mesage and is no longer in use.
- reserved 3;
-
- ImageConfigDiff config = 4;
-
- // warnings is a list of warning messages to return to the requesting client.
- // Warning messages describe a problem the client making the DiffImageRequest should correct or be aware of.
- // Warnings over 256 characters and large numbers of warnings may be truncated.
- repeated string warnings = 5;
-}
-
-message ImageConfigDiff {
- ChangedImageConfig changed = 1;
-}
-
-message ChangedImageConfig {
- message ChangedUser {
- string current = 1;
- string previous = 2;
- }
- ChangedUser changedUser = 1;
-
- message ChangedWorkingDir {
- string current = 1;
- string previous = 2;
- }
-
- ChangedWorkingDir changedWorkingDir = 2;
-
- message EntrypointDiff {
- repeated string added = 1;
- repeated string removed = 2;
- }
-
- EntrypointDiff entrypoints = 3;
-
- message EnvDiff {
- repeated string added = 1;
- repeated string removed = 2;
- }
-
- EnvDiff envs = 4;
-
- message CmdDiff {
- repeated string added = 1;
- repeated string removed = 2;
- }
-
- CmdDiff cmds = 5;
-
- message ChangedStopSignal {
- string current = 1;
- string previous = 2;
- }
- ChangedStopSignal changedStopSignal = 6;
-
- message Volume {}
- message VolumeDiff {
- map added = 1;
- map removed = 2;
- }
- VolumeDiff volumes = 7;
-}
-
-message ImageConfig {
- // User defines the username or UID which the process in the container should run as.
- string user = 1;
-
- // ExposedPorts a set of ports to expose from a container running this image.
- message ExposedPort {}
- map exposed_ports = 2;
-
- // Env is a list of environment variables to be used in a container.
- repeated string env = 3;
-
- // Entrypoint defines a list of arguments to use as the command to execute when the container starts.
- repeated string entrypoint = 4;
-
- // Cmd defines the default arguments to the entrypoint of the container.
- repeated string cmd = 5;
-
- message Volume {}
- // Volumes is a set of directories describing where the process is likely write data specific to a container instance.
- map volumes = 6;
-
- // WorkingDir sets the current working directory of the entrypoint process in the container.
- string working_dir = 7;
-
- // Labels contains arbitrary metadata for the container.
- map labels = 8;
-
- // StopSignal contains the system call signal that will be sent to the container to exit.
- string stop_signal = 9;
-}
-
-message PackagesDiff {
- repeated PackageReference added = 1;
- repeated PackageReference removed = 2;
-
- message ChangedPackageReference {
- string name = 1;
- VersionReference current = 2;
- VersionReference previous = 3;
- }
-
- repeated ChangedPackageReference changed = 3;
-}
-
-message VersionReference {
- string version = 1;
- string reference = 2;
-}
-
-// PackageReference is a reference to a package, containing minimal information to identify it.
-message PackageReference {
- string name = 1;
- string version = 2;
- string reference = 3;
-}
-
-message VulnerabilitiesDiff {
- repeated VulnerabilityReference added = 1;
- repeated VulnerabilityReference removed = 2;
- repeated ScannerMetadata metadata = 3;
-}
-
-message ScannerMetadata {
- string digest = 1;
- chainguard.platform.tenant.Scanner scanner = 2;
- google.protobuf.Timestamp vulnerability_db_last_build_time = 3;
- string vulnerability_db_schema_version = 4;
-}
-
-// VulnerabilityReference is a reference to a vulnerability, containing minimal information to identify it.
-message VulnerabilityReference {
- string id = 1;
- string reference = 2;
- string severity = 3;
-}
-
-// DiffImageRequests are used to request a diff between two images.
-message DiffImageRequest {
- // The UIDP of the image repo to diff against.
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- string from_digest = 2;
- string to_digest = 3;
-}
-
-message SbomRequest {
- // The UIDP of the image repo to get an SBOM for.
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
- // The digest of the image to get an SBOM for.
- string digest = 2;
-}
-
-message ImageConfigRequest {
- // The UIDP of the image repo to get config for.
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
- // The digest of the image to get config for.
- string digest = 2;
- // The architecture to get config for.
- string arch = 3;
-}
-
-message VulnReportRequest {
- // The UIDP of the image repo to get a VulnReport for.
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
- // The digest of the image to get a VulnReport for.
- string digest = 2;
-}
-
-message ManifestMetadataIndexFilter {
- // The tag/index digest to fetch metadata for.
- string digest = 1;
- // The architecture to fetch metadata for.
- string arch = 2;
-}
-
-message ManifestMetadataFilterEntry {
- oneof filter {
- // For fetching metadata for an image digest
- string image_digest = 1;
- // For fetching metadata for an index digest
- ManifestMetadataIndexFilter index_filter = 2;
- }
-}
-
-message ManifestMetadataFilter {
- // The UIDP of the image repo that the digests belongs to.
- string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
- // List of image digests or index digest to fetch package metadata for.
- // All entries specified would be retrieved.
- repeated ManifestMetadataFilterEntry items = 2;
-}
-
-message PkgMetadata {
- // purl of package or subpackage; spec https://github.com/package-url/purl-spec
- string purl = 1;
- // if differ from purl, it means it is a subpackage
- string origin_purl = 2;
- // date when EOL, date 0-0-0 when not eol
- google.protobuf.Timestamp eol_date = 3;
- // timestamp when package was built, date 0-0-0 when build timestamp not available
- google.protobuf.Timestamp build_timestamp = 4;
- // license of package, empty if unknown
- string license = 5;
-}
-
-message ManifestMetadata {
- // Digest of image that packages are associated with.
- string digest = 1;
- // List of packages that are part of image.
- repeated PkgMetadata pkg_metadata = 2;
-}
-
-message ManifestMetadataList {
- repeated ManifestMetadata items = 1;
-}
diff --git a/proto/platform/registry/v1/registry.platform_grpc.pb.go b/proto/platform/registry/v1/registry.platform_grpc.pb.go
deleted file mode 100644
index 1ce0e110..00000000
--- a/proto/platform/registry/v1/registry.platform_grpc.pb.go
+++ /dev/null
@@ -1,592 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: registry.platform.proto
-
-package v1
-
-import (
- v1 "chainguard.dev/sdk/proto/platform/tenant/v1"
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Registry_CreateRepo_FullMethodName = "/chainguard.platform.registry.Registry/CreateRepo"
- Registry_UpdateRepo_FullMethodName = "/chainguard.platform.registry.Registry/UpdateRepo"
- Registry_ListRepos_FullMethodName = "/chainguard.platform.registry.Registry/ListRepos"
- Registry_DeleteRepo_FullMethodName = "/chainguard.platform.registry.Registry/DeleteRepo"
- Registry_CreateTag_FullMethodName = "/chainguard.platform.registry.Registry/CreateTag"
- Registry_UpdateTag_FullMethodName = "/chainguard.platform.registry.Registry/UpdateTag"
- Registry_DeleteTag_FullMethodName = "/chainguard.platform.registry.Registry/DeleteTag"
- Registry_ListTags_FullMethodName = "/chainguard.platform.registry.Registry/ListTags"
- Registry_ListTagHistory_FullMethodName = "/chainguard.platform.registry.Registry/ListTagHistory"
- Registry_DiffImage_FullMethodName = "/chainguard.platform.registry.Registry/DiffImage"
- Registry_GetSbom_FullMethodName = "/chainguard.platform.registry.Registry/GetSbom"
- Registry_GetImageConfig_FullMethodName = "/chainguard.platform.registry.Registry/GetImageConfig"
- Registry_GetVulnReport_FullMethodName = "/chainguard.platform.registry.Registry/GetVulnReport"
- Registry_ListManifestMetadata_FullMethodName = "/chainguard.platform.registry.Registry/ListManifestMetadata"
-)
-
-// RegistryClient is the client API for Registry service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RegistryClient interface {
- CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error)
- UpdateRepo(ctx context.Context, in *Repo, opts ...grpc.CallOption) (*Repo, error)
- ListRepos(ctx context.Context, in *RepoFilter, opts ...grpc.CallOption) (*RepoList, error)
- DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- CreateTag(ctx context.Context, in *CreateTagRequest, opts ...grpc.CallOption) (*Tag, error)
- UpdateTag(ctx context.Context, in *Tag, opts ...grpc.CallOption) (*Tag, error)
- DeleteTag(ctx context.Context, in *DeleteTagRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- ListTags(ctx context.Context, in *TagFilter, opts ...grpc.CallOption) (*TagList, error)
- ListTagHistory(ctx context.Context, in *TagHistoryFilter, opts ...grpc.CallOption) (*TagHistoryList, error)
- DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error)
- GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error)
- GetImageConfig(ctx context.Context, in *ImageConfigRequest, opts ...grpc.CallOption) (*ImageConfig, error)
- GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error)
- ListManifestMetadata(ctx context.Context, in *ManifestMetadataFilter, opts ...grpc.CallOption) (*ManifestMetadataList, error)
-}
-
-type registryClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRegistryClient(cc grpc.ClientConnInterface) RegistryClient {
- return ®istryClient{cc}
-}
-
-func (c *registryClient) CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error) {
- out := new(Repo)
- err := c.cc.Invoke(ctx, Registry_CreateRepo_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) UpdateRepo(ctx context.Context, in *Repo, opts ...grpc.CallOption) (*Repo, error) {
- out := new(Repo)
- err := c.cc.Invoke(ctx, Registry_UpdateRepo_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) ListRepos(ctx context.Context, in *RepoFilter, opts ...grpc.CallOption) (*RepoList, error) {
- out := new(RepoList)
- err := c.cc.Invoke(ctx, Registry_ListRepos_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Registry_DeleteRepo_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) CreateTag(ctx context.Context, in *CreateTagRequest, opts ...grpc.CallOption) (*Tag, error) {
- out := new(Tag)
- err := c.cc.Invoke(ctx, Registry_CreateTag_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) UpdateTag(ctx context.Context, in *Tag, opts ...grpc.CallOption) (*Tag, error) {
- out := new(Tag)
- err := c.cc.Invoke(ctx, Registry_UpdateTag_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) DeleteTag(ctx context.Context, in *DeleteTagRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Registry_DeleteTag_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) ListTags(ctx context.Context, in *TagFilter, opts ...grpc.CallOption) (*TagList, error) {
- out := new(TagList)
- err := c.cc.Invoke(ctx, Registry_ListTags_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) ListTagHistory(ctx context.Context, in *TagHistoryFilter, opts ...grpc.CallOption) (*TagHistoryList, error) {
- out := new(TagHistoryList)
- err := c.cc.Invoke(ctx, Registry_ListTagHistory_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error) {
- out := new(DiffImageResponse)
- err := c.cc.Invoke(ctx, Registry_DiffImage_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error) {
- out := new(v1.Sbom2)
- err := c.cc.Invoke(ctx, Registry_GetSbom_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) GetImageConfig(ctx context.Context, in *ImageConfigRequest, opts ...grpc.CallOption) (*ImageConfig, error) {
- out := new(ImageConfig)
- err := c.cc.Invoke(ctx, Registry_GetImageConfig_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error) {
- out := new(v1.VulnReport)
- err := c.cc.Invoke(ctx, Registry_GetVulnReport_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *registryClient) ListManifestMetadata(ctx context.Context, in *ManifestMetadataFilter, opts ...grpc.CallOption) (*ManifestMetadataList, error) {
- out := new(ManifestMetadataList)
- err := c.cc.Invoke(ctx, Registry_ListManifestMetadata_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RegistryServer is the server API for Registry service.
-// All implementations must embed UnimplementedRegistryServer
-// for forward compatibility
-type RegistryServer interface {
- CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error)
- UpdateRepo(context.Context, *Repo) (*Repo, error)
- ListRepos(context.Context, *RepoFilter) (*RepoList, error)
- DeleteRepo(context.Context, *DeleteRepoRequest) (*emptypb.Empty, error)
- CreateTag(context.Context, *CreateTagRequest) (*Tag, error)
- UpdateTag(context.Context, *Tag) (*Tag, error)
- DeleteTag(context.Context, *DeleteTagRequest) (*emptypb.Empty, error)
- ListTags(context.Context, *TagFilter) (*TagList, error)
- ListTagHistory(context.Context, *TagHistoryFilter) (*TagHistoryList, error)
- DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error)
- GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error)
- GetImageConfig(context.Context, *ImageConfigRequest) (*ImageConfig, error)
- GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error)
- ListManifestMetadata(context.Context, *ManifestMetadataFilter) (*ManifestMetadataList, error)
- mustEmbedUnimplementedRegistryServer()
-}
-
-// UnimplementedRegistryServer must be embedded to have forward compatible implementations.
-type UnimplementedRegistryServer struct {
-}
-
-func (UnimplementedRegistryServer) CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error) {
- return nil, status.Errorf(codes.Unimplemented, "method CreateRepo not implemented")
-}
-func (UnimplementedRegistryServer) UpdateRepo(context.Context, *Repo) (*Repo, error) {
- return nil, status.Errorf(codes.Unimplemented, "method UpdateRepo not implemented")
-}
-func (UnimplementedRegistryServer) ListRepos(context.Context, *RepoFilter) (*RepoList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListRepos not implemented")
-}
-func (UnimplementedRegistryServer) DeleteRepo(context.Context, *DeleteRepoRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method DeleteRepo not implemented")
-}
-func (UnimplementedRegistryServer) CreateTag(context.Context, *CreateTagRequest) (*Tag, error) {
- return nil, status.Errorf(codes.Unimplemented, "method CreateTag not implemented")
-}
-func (UnimplementedRegistryServer) UpdateTag(context.Context, *Tag) (*Tag, error) {
- return nil, status.Errorf(codes.Unimplemented, "method UpdateTag not implemented")
-}
-func (UnimplementedRegistryServer) DeleteTag(context.Context, *DeleteTagRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method DeleteTag not implemented")
-}
-func (UnimplementedRegistryServer) ListTags(context.Context, *TagFilter) (*TagList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListTags not implemented")
-}
-func (UnimplementedRegistryServer) ListTagHistory(context.Context, *TagHistoryFilter) (*TagHistoryList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListTagHistory not implemented")
-}
-func (UnimplementedRegistryServer) DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method DiffImage not implemented")
-}
-func (UnimplementedRegistryServer) GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetSbom not implemented")
-}
-func (UnimplementedRegistryServer) GetImageConfig(context.Context, *ImageConfigRequest) (*ImageConfig, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetImageConfig not implemented")
-}
-func (UnimplementedRegistryServer) GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetVulnReport not implemented")
-}
-func (UnimplementedRegistryServer) ListManifestMetadata(context.Context, *ManifestMetadataFilter) (*ManifestMetadataList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListManifestMetadata not implemented")
-}
-func (UnimplementedRegistryServer) mustEmbedUnimplementedRegistryServer() {}
-
-// UnsafeRegistryServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RegistryServer will
-// result in compilation errors.
-type UnsafeRegistryServer interface {
- mustEmbedUnimplementedRegistryServer()
-}
-
-func RegisterRegistryServer(s grpc.ServiceRegistrar, srv RegistryServer) {
- s.RegisterService(&Registry_ServiceDesc, srv)
-}
-
-func _Registry_CreateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateRepoRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).CreateRepo(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_CreateRepo_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).CreateRepo(ctx, req.(*CreateRepoRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_UpdateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Repo)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).UpdateRepo(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_UpdateRepo_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).UpdateRepo(ctx, req.(*Repo))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_ListRepos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RepoFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).ListRepos(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_ListRepos_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).ListRepos(ctx, req.(*RepoFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_DeleteRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteRepoRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).DeleteRepo(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_DeleteRepo_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).DeleteRepo(ctx, req.(*DeleteRepoRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_CreateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateTagRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).CreateTag(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_CreateTag_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).CreateTag(ctx, req.(*CreateTagRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_UpdateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Tag)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).UpdateTag(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_UpdateTag_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).UpdateTag(ctx, req.(*Tag))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_DeleteTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteTagRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).DeleteTag(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_DeleteTag_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).DeleteTag(ctx, req.(*DeleteTagRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_ListTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(TagFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).ListTags(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_ListTags_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).ListTags(ctx, req.(*TagFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_ListTagHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(TagHistoryFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).ListTagHistory(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_ListTagHistory_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).ListTagHistory(ctx, req.(*TagHistoryFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_DiffImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DiffImageRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).DiffImage(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_DiffImage_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).DiffImage(ctx, req.(*DiffImageRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_GetSbom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SbomRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).GetSbom(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_GetSbom_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).GetSbom(ctx, req.(*SbomRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_GetImageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ImageConfigRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).GetImageConfig(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_GetImageConfig_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).GetImageConfig(ctx, req.(*ImageConfigRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_GetVulnReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(VulnReportRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).GetVulnReport(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_GetVulnReport_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).GetVulnReport(ctx, req.(*VulnReportRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Registry_ListManifestMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ManifestMetadataFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RegistryServer).ListManifestMetadata(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Registry_ListManifestMetadata_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RegistryServer).ListManifestMetadata(ctx, req.(*ManifestMetadataFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Registry_ServiceDesc is the grpc.ServiceDesc for Registry service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Registry_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.registry.Registry",
- HandlerType: (*RegistryServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "CreateRepo",
- Handler: _Registry_CreateRepo_Handler,
- },
- {
- MethodName: "UpdateRepo",
- Handler: _Registry_UpdateRepo_Handler,
- },
- {
- MethodName: "ListRepos",
- Handler: _Registry_ListRepos_Handler,
- },
- {
- MethodName: "DeleteRepo",
- Handler: _Registry_DeleteRepo_Handler,
- },
- {
- MethodName: "CreateTag",
- Handler: _Registry_CreateTag_Handler,
- },
- {
- MethodName: "UpdateTag",
- Handler: _Registry_UpdateTag_Handler,
- },
- {
- MethodName: "DeleteTag",
- Handler: _Registry_DeleteTag_Handler,
- },
- {
- MethodName: "ListTags",
- Handler: _Registry_ListTags_Handler,
- },
- {
- MethodName: "ListTagHistory",
- Handler: _Registry_ListTagHistory_Handler,
- },
- {
- MethodName: "DiffImage",
- Handler: _Registry_DiffImage_Handler,
- },
- {
- MethodName: "GetSbom",
- Handler: _Registry_GetSbom_Handler,
- },
- {
- MethodName: "GetImageConfig",
- Handler: _Registry_GetImageConfig_Handler,
- },
- {
- MethodName: "GetVulnReport",
- Handler: _Registry_GetVulnReport_Handler,
- },
- {
- MethodName: "ListManifestMetadata",
- Handler: _Registry_ListManifestMetadata_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "registry.platform.proto",
-}
diff --git a/proto/platform/registry/v1/test/registry.go b/proto/platform/registry/v1/test/registry.go
deleted file mode 100644
index a0abfed0..00000000
--- a/proto/platform/registry/v1/test/registry.go
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- registry "chainguard.dev/sdk/proto/platform/registry/v1"
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-)
-
-var _ registry.Clients = (*MockRegistryClients)(nil)
-
-type MockRegistryClients struct {
- OnClose error
-
- RegistryClient MockRegistryClient
-}
-
-func (m MockRegistryClients) Registry() registry.RegistryClient {
- return &m.RegistryClient
-}
-
-func (m MockRegistryClients) Close() error {
- return m.OnClose
-}
-
-var _ registry.RegistryClient = (*MockRegistryClient)(nil)
-
-type MockRegistryClient struct {
- registry.RegistryClient
-
- OnCreateRepos []ReposOnCreate
- OnDeleteRepos []ReposOnDelete
- OnListRepos []ReposOnList
- OnCreateTags []TagsOnCreate
- OnDeleteTags []TagsOnDelete
- OnUpdateTag []TagOnUpdate
- OnListTags []TagsOnList
- OnUpdateRepo []RepoOnUpdate
- OnListTagHistory []TagHistoryOnList
- OnGetImageConfig []ImageConfigOnGet
- OnGetSbom []SbomOnGet
- OnGetVulnReport []VulnReportOnGet
- OnDiffImage []DiffImage
- OnListManifestMetadata []ManifestMetadataOnList
-}
-
-type DiffImage struct {
- Given *registry.DiffImageRequest
- Diff *registry.DiffImageResponse
- Error error
-}
-
-type ReposOnCreate struct {
- Given *registry.CreateRepoRequest
- Created *registry.Repo
- Error error
-}
-
-type ReposOnDelete struct {
- Given *registry.DeleteRepoRequest
- Error error
-}
-
-type ReposOnList struct {
- Given *registry.RepoFilter
- List *registry.RepoList
- Error error
-}
-
-type TagsOnCreate struct {
- Given *registry.CreateTagRequest
- Created *registry.Tag
- Error error
-}
-
-type TagsOnDelete struct {
- Given *registry.DeleteTagRequest
- Error error
-}
-
-type TagOnUpdate struct {
- Given *registry.Tag
- Updated *registry.Tag
- Error error
-}
-
-type TagsOnList struct {
- Given *registry.TagFilter
- List *registry.TagList
- Error error
-}
-
-type RepoOnUpdate struct {
- Given *registry.Repo
- Updated *registry.Repo
- Error error
-}
-
-type TagHistoryOnList struct {
- Given *registry.TagHistoryFilter
- List *registry.TagHistoryList
- Error error
-}
-
-type ImageConfigOnGet struct {
- Given *registry.ImageConfigRequest
- Get *registry.ImageConfig
- Error error
-}
-
-type SbomOnGet struct {
- Given *registry.SbomRequest
- Get *tenant.Sbom2
- Error error
-}
-
-type VulnReportOnGet struct {
- Given *registry.VulnReportRequest
- Get *tenant.VulnReport
- Error error
-}
-
-type ManifestMetadataOnList struct {
- Given *registry.ManifestMetadataFilter
- List *registry.ManifestMetadataList
- Error error
-}
-
-func (m MockRegistryClient) CreateRepo(_ context.Context, given *registry.CreateRepoRequest, _ ...grpc.CallOption) (*registry.Repo, error) {
- for _, o := range m.OnCreateRepos {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) DeleteRepo(_ context.Context, given *registry.DeleteRepoRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDeleteRepos {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) ListRepos(_ context.Context, given *registry.RepoFilter, _ ...grpc.CallOption) (*registry.RepoList, error) { //nolint: revive
- for _, o := range m.OnListRepos {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) CreateTag(_ context.Context, given *registry.CreateTagRequest, _ ...grpc.CallOption) (*registry.Tag, error) {
- for _, o := range m.OnCreateTags {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) UpdateTag(_ context.Context, given *registry.Tag, _ ...grpc.CallOption) (*registry.Tag, error) {
- for _, o := range m.OnUpdateTag {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) DeleteTag(_ context.Context, given *registry.DeleteTagRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDeleteTags {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) ListTags(_ context.Context, given *registry.TagFilter, _ ...grpc.CallOption) (*registry.TagList, error) { //nolint: revive
- for _, o := range m.OnListTags {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) UpdateRepo(_ context.Context, given *registry.Repo, _ ...grpc.CallOption) (*registry.Repo, error) { //nolint: revive
- for _, o := range m.OnUpdateRepo {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) ListTagHistory(_ context.Context, given *registry.TagHistoryFilter, _ ...grpc.CallOption) (*registry.TagHistoryList, error) { //nolint: revive
- for _, o := range m.OnListTagHistory {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) GetImageConfig(_ context.Context, given *registry.ImageConfigRequest, _ ...grpc.CallOption) (*registry.ImageConfig, error) { //nolint: revive
- for _, o := range m.OnGetImageConfig {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Get, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) GetSbom(_ context.Context, given *registry.SbomRequest, _ ...grpc.CallOption) (*tenant.Sbom2, error) { //nolint: revive
- for _, o := range m.OnGetSbom {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Get, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) GetVulnReport(_ context.Context, given *registry.VulnReportRequest, _ ...grpc.CallOption) (*tenant.VulnReport, error) { //nolint: revive
- for _, o := range m.OnGetVulnReport {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Get, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) DiffImage(_ context.Context, given *registry.DiffImageRequest, _ ...grpc.CallOption) (*registry.DiffImageResponse, error) {
- for _, o := range m.OnDiffImage {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Diff, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockRegistryClient) ListManifestMetadata(_ context.Context, given *registry.ManifestMetadataFilter, _ ...grpc.CallOption) (*registry.ManifestMetadataList, error) {
- for _, o := range m.OnListManifestMetadata {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.go b/proto/platform/tenant/v1/attestation.platform.pb.go
deleted file mode 100644
index 347da47a..00000000
--- a/proto/platform/tenant/v1/attestation.platform.pb.go
+++ /dev/null
@@ -1,389 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: attestation.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-// Attestation represents a normalized Attestation that we have ingested into our datastore.
-// They are linked to Signatures via ID, as in they are 'children' of Signatures
-// There can be multiple of these that we keep.
-type Attestation struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Attestation UIDP at which this Attestation resides in the hierarchy.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // raw_attestation is a free form type to stub in any attestations so we don't end up a
- // adding new tables for all the new type of attestations, initial goal is to add image configs
- // and anything which comes up after that
- RawAttestation []byte `protobuf:"bytes,2,opt,name=raw_attestation,json=rawAttestation,proto3" json:"raw_attestation,omitempty"`
- // format holds the Document format type
- Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"`
- // generated_at holds when the Attestation was generated.
- GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"`
- // Name of the Attestation.
- Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
- // Short description of the Attestation
- Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
- // digest of the Attestation when ingested
- Digest *string `protobuf:"bytes,7,opt,name=digest,proto3,oneof" json:"digest,omitempty"`
-}
-
-func (x *Attestation) Reset() {
- *x = Attestation{}
- if protoimpl.UnsafeEnabled {
- mi := &file_attestation_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Attestation) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Attestation) ProtoMessage() {}
-
-func (x *Attestation) ProtoReflect() protoreflect.Message {
- mi := &file_attestation_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Attestation.ProtoReflect.Descriptor instead.
-func (*Attestation) Descriptor() ([]byte, []int) {
- return file_attestation_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Attestation) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Attestation) GetRawAttestation() []byte {
- if x != nil {
- return x.RawAttestation
- }
- return nil
-}
-
-func (x *Attestation) GetFormat() string {
- if x != nil {
- return x.Format
- }
- return ""
-}
-
-func (x *Attestation) GetGeneratedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.GeneratedAt
- }
- return nil
-}
-
-func (x *Attestation) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Attestation) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Attestation) GetDigest() string {
- if x != nil && x.Digest != nil {
- return *x.Digest
- }
- return ""
-}
-
-type AttestationList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Attestation `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *AttestationList) Reset() {
- *x = AttestationList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_attestation_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AttestationList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AttestationList) ProtoMessage() {}
-
-func (x *AttestationList) ProtoReflect() protoreflect.Message {
- mi := &file_attestation_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AttestationList.ProtoReflect.Descriptor instead.
-func (*AttestationList) Descriptor() ([]byte, []int) {
- return file_attestation_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *AttestationList) GetItems() []*Attestation {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type AttestationFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *AttestationFilter) Reset() {
- *x = AttestationFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_attestation_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AttestationFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AttestationFilter) ProtoMessage() {}
-
-func (x *AttestationFilter) ProtoReflect() protoreflect.Message {
- mi := &file_attestation_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AttestationFilter.ProtoReflect.Descriptor instead.
-func (*AttestationFilter) Descriptor() ([]byte, []int) {
- return file_attestation_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *AttestationFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *AttestationFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-var File_attestation_platform_proto protoreflect.FileDescriptor
-
-var file_attestation_platform_proto_rawDesc = []byte{
- 0x0a, 0x1a, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x41, 0x74,
- 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x61, 0x77,
- 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0c, 0x52, 0x0e, 0x72, 0x61, 0x77, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x67, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x67, 0x65,
- 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07,
- 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x74, 0x74,
- 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x82, 0x01, 0x0a, 0x0c, 0x41,
- 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x04, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x1a, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x9e, 0x05, 0x10, 0x01, 0x42,
- 0x76, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_attestation_platform_proto_rawDescOnce sync.Once
- file_attestation_platform_proto_rawDescData = file_attestation_platform_proto_rawDesc
-)
-
-func file_attestation_platform_proto_rawDescGZIP() []byte {
- file_attestation_platform_proto_rawDescOnce.Do(func() {
- file_attestation_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_attestation_platform_proto_rawDescData)
- })
- return file_attestation_platform_proto_rawDescData
-}
-
-var file_attestation_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_attestation_platform_proto_goTypes = []interface{}{
- (*Attestation)(nil), // 0: chainguard.platform.tenant.Attestation
- (*AttestationList)(nil), // 1: chainguard.platform.tenant.AttestationList
- (*AttestationFilter)(nil), // 2: chainguard.platform.tenant.AttestationFilter
- (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
-}
-var file_attestation_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.tenant.Attestation.generated_at:type_name -> google.protobuf.Timestamp
- 0, // 1: chainguard.platform.tenant.AttestationList.items:type_name -> chainguard.platform.tenant.Attestation
- 4, // 2: chainguard.platform.tenant.AttestationFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 2, // 3: chainguard.platform.tenant.Attestations.List:input_type -> chainguard.platform.tenant.AttestationFilter
- 1, // 4: chainguard.platform.tenant.Attestations.List:output_type -> chainguard.platform.tenant.AttestationList
- 4, // [4:5] is the sub-list for method output_type
- 3, // [3:4] 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_attestation_platform_proto_init() }
-func file_attestation_platform_proto_init() {
- if File_attestation_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_attestation_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Attestation); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_attestation_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttestationList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_attestation_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AttestationFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_attestation_platform_proto_msgTypes[0].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_attestation_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_attestation_platform_proto_goTypes,
- DependencyIndexes: file_attestation_platform_proto_depIdxs,
- MessageInfos: file_attestation_platform_proto_msgTypes,
- }.Build()
- File_attestation_platform_proto = out.File
- file_attestation_platform_proto_rawDesc = nil
- file_attestation_platform_proto_goTypes = nil
- file_attestation_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.gw.go b/proto/platform/tenant/v1/attestation.platform.pb.gw.go
deleted file mode 100644
index 459d4b0b..00000000
--- a/proto/platform/tenant/v1/attestation.platform.pb.gw.go
+++ /dev/null
@@ -1,164 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: attestation.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Attestations_List_0(ctx context.Context, marshaler runtime.Marshaler, client AttestationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AttestationFilter
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Attestations_List_0(ctx context.Context, marshaler runtime.Marshaler, server AttestationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AttestationFilter
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterAttestationsHandlerServer registers the http handlers for service Attestations to "mux".
-// UnaryRPC :call AttestationsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAttestationsHandlerFromEndpoint instead.
-func RegisterAttestationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AttestationsServer) error {
-
- mux.Handle("POST", pattern_Attestations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Attestations/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Attestations/List"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Attestations_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Attestations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterAttestationsHandlerFromEndpoint is same as RegisterAttestationsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterAttestationsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterAttestationsHandler(ctx, mux, conn)
-}
-
-// RegisterAttestationsHandler registers the http handlers for service Attestations to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterAttestationsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterAttestationsHandlerClient(ctx, mux, NewAttestationsClient(conn))
-}
-
-// RegisterAttestationsHandlerClient registers the http handlers for service Attestations
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AttestationsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AttestationsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "AttestationsClient" to call the correct interceptors.
-func RegisterAttestationsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AttestationsClient) error {
-
- mux.Handle("POST", pattern_Attestations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Attestations/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Attestations/List"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Attestations_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Attestations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Attestations_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Attestations", "List"}, ""))
-)
-
-var (
- forward_Attestations_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/attestation.platform.proto b/proto/platform/tenant/v1/attestation.platform.proto
deleted file mode 100644
index 652a67f2..00000000
--- a/proto/platform/tenant/v1/attestation.platform.proto
+++ /dev/null
@@ -1,63 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantAttestationProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Attestations {
- rpc List(AttestationFilter) returns (AttestationList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_ATTESTATIONS_LIST]
- unscoped: true
- }
- };
- }
- }
-
-// Attestation represents a normalized Attestation that we have ingested into our datastore.
-// They are linked to Signatures via ID, as in they are 'children' of Signatures
-// There can be multiple of these that we keep.
-message Attestation {
- // id, The Attestation UIDP at which this Attestation resides in the hierarchy.
- string id = 1;
-
- // raw_attestation is a free form type to stub in any attestations so we don't end up a
- // adding new tables for all the new type of attestations, initial goal is to add image configs
- // and anything which comes up after that
- bytes raw_attestation = 2;
-
- // format holds the Document format type
- string format = 3;
-
- // generated_at holds when the Attestation was generated.
- google.protobuf.Timestamp generated_at = 4;
-
- // Name of the Attestation.
- string name = 5;
-
- // Short description of the Attestation
- string description = 6;
-
- // digest of the Attestation when ingested
- optional string digest = 7;
-}
-
-message AttestationList {
- repeated Attestation items = 1;
-}
-
-message AttestationFilter {
- // id is the exact UID of the record.
- string id = 1;
-
- chainguard.platform.common.UIDPFilter uidp = 2;
-
-}
diff --git a/proto/platform/tenant/v1/attestation.platform_grpc.pb.go b/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
deleted file mode 100644
index 29dad01f..00000000
--- a/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: attestation.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Attestations_List_FullMethodName = "/chainguard.platform.tenant.Attestations/List"
-)
-
-// AttestationsClient is the client API for Attestations service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type AttestationsClient interface {
- List(ctx context.Context, in *AttestationFilter, opts ...grpc.CallOption) (*AttestationList, error)
-}
-
-type attestationsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewAttestationsClient(cc grpc.ClientConnInterface) AttestationsClient {
- return &attestationsClient{cc}
-}
-
-func (c *attestationsClient) List(ctx context.Context, in *AttestationFilter, opts ...grpc.CallOption) (*AttestationList, error) {
- out := new(AttestationList)
- err := c.cc.Invoke(ctx, Attestations_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// AttestationsServer is the server API for Attestations service.
-// All implementations must embed UnimplementedAttestationsServer
-// for forward compatibility
-type AttestationsServer interface {
- List(context.Context, *AttestationFilter) (*AttestationList, error)
- mustEmbedUnimplementedAttestationsServer()
-}
-
-// UnimplementedAttestationsServer must be embedded to have forward compatible implementations.
-type UnimplementedAttestationsServer struct {
-}
-
-func (UnimplementedAttestationsServer) List(context.Context, *AttestationFilter) (*AttestationList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedAttestationsServer) mustEmbedUnimplementedAttestationsServer() {}
-
-// UnsafeAttestationsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to AttestationsServer will
-// result in compilation errors.
-type UnsafeAttestationsServer interface {
- mustEmbedUnimplementedAttestationsServer()
-}
-
-func RegisterAttestationsServer(s grpc.ServiceRegistrar, srv AttestationsServer) {
- s.RegisterService(&Attestations_ServiceDesc, srv)
-}
-
-func _Attestations_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AttestationFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(AttestationsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Attestations_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(AttestationsServer).List(ctx, req.(*AttestationFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Attestations_ServiceDesc is the grpc.ServiceDesc for Attestations service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Attestations_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Attestations",
- HandlerType: (*AttestationsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Attestations_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "attestation.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
deleted file mode 100644
index e3fc43d6..00000000
--- a/proto/platform/tenant/v1/clients.go
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "context"
- "fmt"
- "net/url"
- "time"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- "github.com/chainguard-dev/clog"
- "google.golang.org/grpc"
-
- "chainguard.dev/sdk/auth"
-)
-
-type Clients interface {
- Sboms() SbomsClient
- Signatures() SignaturesClient
- VulnReports() VulnReportsClient
-
- Close() error
-}
-
-func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
- uri, err := url.Parse(addr)
- if err != nil {
- return nil, fmt.Errorf("failed to parse tenant service address, must be a url: %w", err)
- }
-
- target, opts := delegate.GRPCOptions(*uri)
-
- // TODO: we may want to require transport security at some future point.
- if cred := auth.NewFromToken(ctx, token, false); cred != nil {
- opts = append(opts, grpc.WithPerRPCCredentials(cred))
- } else {
- clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
- }
-
- var cancel context.CancelFunc
- if _, timeoutSet := ctx.Deadline(); !timeoutSet {
- ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
- defer cancel()
- }
- conn, err := grpc.DialContext(ctx, target, opts...)
- if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
- }
-
- return &clients{
- sboms: NewSbomsClient(conn),
- vulnReports: NewVulnReportsClient(conn),
- signatures: NewSignaturesClient(conn),
-
- conn: conn,
- }, nil
-}
-
-func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
- return &clients{
- sboms: NewSbomsClient(conn),
- vulnReports: NewVulnReportsClient(conn),
- signatures: NewSignaturesClient(conn),
- // conn is not set, this client struct does not own closing it.
- }
-}
-
-type clients struct {
- sboms SbomsClient
- signatures SignaturesClient
- vulnReports VulnReportsClient
-
- conn *grpc.ClientConn
-}
-
-func (c *clients) Sboms() SbomsClient {
- return c.sboms
-}
-
-func (c *clients) Signatures() SignaturesClient {
- return c.signatures
-}
-
-func (c *clients) VulnReports() VulnReportsClient {
- return c.vulnReports
-}
-
-func (c *clients) Close() error {
- if c.conn != nil {
- return c.conn.Close()
- }
- return nil
-}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
deleted file mode 100644
index 6a950653..00000000
--- a/proto/platform/tenant/v1/doc.go
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package v1 contains the v1 GRPC client and server definitions
-// for implementing Tenant interactions for the Console.
-//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. vuln.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. attestation.platform.proto
-package v1
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.go b/proto/platform/tenant/v1/sbom.platform.pb.go
deleted file mode 100644
index 69a23ca4..00000000
--- a/proto/platform/tenant/v1/sbom.platform.pb.go
+++ /dev/null
@@ -1,1058 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: sbom.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-// Type
-type Sbom2_Source int32
-
-const (
- Sbom2_UNKNOWN Sbom2_Source = 0
- Sbom2_INGESTED Sbom2_Source = 1
- Sbom2_GENERATED Sbom2_Source = 2
-)
-
-// Enum value maps for Sbom2_Source.
-var (
- Sbom2_Source_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "INGESTED",
- 2: "GENERATED",
- }
- Sbom2_Source_value = map[string]int32{
- "UNKNOWN": 0,
- "INGESTED": 1,
- "GENERATED": 2,
- }
-)
-
-func (x Sbom2_Source) Enum() *Sbom2_Source {
- p := new(Sbom2_Source)
- *p = x
- return p
-}
-
-func (x Sbom2_Source) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Sbom2_Source) Descriptor() protoreflect.EnumDescriptor {
- return file_sbom_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (Sbom2_Source) Type() protoreflect.EnumType {
- return &file_sbom_platform_proto_enumTypes[0]
-}
-
-func (x Sbom2_Source) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Sbom2_Source.Descriptor instead.
-func (Sbom2_Source) EnumDescriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type ComponentGraph_Edge_Type int32
-
-const (
- ComponentGraph_Edge_UNKNOWN ComponentGraph_Edge_Type = 0
- ComponentGraph_Edge_DESCRIBES ComponentGraph_Edge_Type = 1
- ComponentGraph_Edge_CONTAINS ComponentGraph_Edge_Type = 2
- ComponentGraph_Edge_DEPENDS_ON ComponentGraph_Edge_Type = 3
- ComponentGraph_Edge_GENERATED_FROM ComponentGraph_Edge_Type = 4 // and so on...; for inspiration, see https://spdx.github.io/spdx-spec/v2.3/relationships-between-SPDX-elements/
-)
-
-// Enum value maps for ComponentGraph_Edge_Type.
-var (
- ComponentGraph_Edge_Type_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "DESCRIBES",
- 2: "CONTAINS",
- 3: "DEPENDS_ON",
- 4: "GENERATED_FROM",
- }
- ComponentGraph_Edge_Type_value = map[string]int32{
- "UNKNOWN": 0,
- "DESCRIBES": 1,
- "CONTAINS": 2,
- "DEPENDS_ON": 3,
- "GENERATED_FROM": 4,
- }
-)
-
-func (x ComponentGraph_Edge_Type) Enum() *ComponentGraph_Edge_Type {
- p := new(ComponentGraph_Edge_Type)
- *p = x
- return p
-}
-
-func (x ComponentGraph_Edge_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ComponentGraph_Edge_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_sbom_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (ComponentGraph_Edge_Type) Type() protoreflect.EnumType {
- return &file_sbom_platform_proto_enumTypes[1]
-}
-
-func (x ComponentGraph_Edge_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ComponentGraph_Edge_Type.Descriptor instead.
-func (ComponentGraph_Edge_Type) EnumDescriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{1, 1, 0}
-}
-
-// Sbom represents a normalized SBOM that we have ingested into our datastore.
-// They are linked to Signatures via ID, as in they are 'children' of Signatures
-// There can be multiple of these that we keep.
-type Sbom2 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Sbom UIDP at which this Sbom resides in the hierarchy.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // raw_sbom may or may not be useful in the long term, but for now to make
- // progress on this, we'll just yolo and serialize it here.
- RawSbom []byte `protobuf:"bytes,2,opt,name=raw_sbom,json=rawSbom,proto3" json:"raw_sbom,omitempty"`
- Graph *ComponentGraph `protobuf:"bytes,3,opt,name=graph,proto3" json:"graph,omitempty"`
- // last_seen tracks the timestamp at which this sbom was last seen.
- // TODO(vaikas): Does this really make any sense?
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // tool holds the name of the tool that produced the SBOM.
- Tool string `protobuf:"bytes,5,opt,name=tool,proto3" json:"tool,omitempty"`
- // format holds whether the SBOM is SPDX, CycloneDX, or other.
- Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"`
- // generated_at holds when the SBOM was generated.
- GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"`
- // authors is zero or more authors concatenated.
- Authors string `protobuf:"bytes,8,opt,name=authors,proto3" json:"authors,omitempty"`
- // source is where the SBOM came from. For example, we want to know if sbom
- // was generated by us, or ingested.
- Source Sbom2_Source `protobuf:"varint,9,opt,name=source,proto3,enum=chainguard.platform.tenant.Sbom2_Source" json:"source,omitempty"`
- // Name of the Sbom.
- Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"`
- // Short description of the Sbom
- Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"`
- // digest of the SBOM when ingested
- Digest *string `protobuf:"bytes,12,opt,name=digest,proto3,oneof" json:"digest,omitempty"`
-}
-
-func (x *Sbom2) Reset() {
- *x = Sbom2{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sbom2) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sbom2) ProtoMessage() {}
-
-func (x *Sbom2) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sbom2.ProtoReflect.Descriptor instead.
-func (*Sbom2) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Sbom2) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Sbom2) GetRawSbom() []byte {
- if x != nil {
- return x.RawSbom
- }
- return nil
-}
-
-func (x *Sbom2) GetGraph() *ComponentGraph {
- if x != nil {
- return x.Graph
- }
- return nil
-}
-
-func (x *Sbom2) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Sbom2) GetTool() string {
- if x != nil {
- return x.Tool
- }
- return ""
-}
-
-func (x *Sbom2) GetFormat() string {
- if x != nil {
- return x.Format
- }
- return ""
-}
-
-func (x *Sbom2) GetGeneratedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.GeneratedAt
- }
- return nil
-}
-
-func (x *Sbom2) GetAuthors() string {
- if x != nil {
- return x.Authors
- }
- return ""
-}
-
-func (x *Sbom2) GetSource() Sbom2_Source {
- if x != nil {
- return x.Source
- }
- return Sbom2_UNKNOWN
-}
-
-func (x *Sbom2) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Sbom2) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Sbom2) GetDigest() string {
- if x != nil && x.Digest != nil {
- return *x.Digest
- }
- return ""
-}
-
-type ComponentGraph struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Nodes []*ComponentGraph_Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
- Edges []*ComponentGraph_Edge `protobuf:"bytes,2,rep,name=edges,proto3" json:"edges,omitempty"`
-}
-
-func (x *ComponentGraph) Reset() {
- *x = ComponentGraph{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ComponentGraph) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ComponentGraph) ProtoMessage() {}
-
-func (x *ComponentGraph) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ComponentGraph.ProtoReflect.Descriptor instead.
-func (*ComponentGraph) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ComponentGraph) GetNodes() []*ComponentGraph_Node {
- if x != nil {
- return x.Nodes
- }
- return nil
-}
-
-func (x *ComponentGraph) GetEdges() []*ComponentGraph_Edge {
- if x != nil {
- return x.Edges
- }
- return nil
-}
-
-type Package2 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
- License string `protobuf:"bytes,4,opt,name=license,proto3" json:"license,omitempty"`
- Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
- Purl string `protobuf:"bytes,6,opt,name=purl,proto3" json:"purl,omitempty"`
-}
-
-func (x *Package2) Reset() {
- *x = Package2{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Package2) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Package2) ProtoMessage() {}
-
-func (x *Package2) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Package2.ProtoReflect.Descriptor instead.
-func (*Package2) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Package2) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Package2) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Package2) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *Package2) GetLicense() string {
- if x != nil {
- return x.License
- }
- return ""
-}
-
-func (x *Package2) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Package2) GetPurl() string {
- if x != nil {
- return x.Purl
- }
- return ""
-}
-
-type File2 struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Types []string `protobuf:"bytes,4,rep,name=types,proto3" json:"types,omitempty"`
-}
-
-func (x *File2) Reset() {
- *x = File2{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *File2) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*File2) ProtoMessage() {}
-
-func (x *File2) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use File2.ProtoReflect.Descriptor instead.
-func (*File2) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *File2) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *File2) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *File2) GetTypes() []string {
- if x != nil {
- return x.Types
- }
- return nil
-}
-
-type Sbom2List struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Sbom2 `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *Sbom2List) Reset() {
- *x = Sbom2List{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sbom2List) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sbom2List) ProtoMessage() {}
-
-func (x *Sbom2List) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sbom2List.ProtoReflect.Descriptor instead.
-func (*Sbom2List) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Sbom2List) GetItems() []*Sbom2 {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type Sbom2Filter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // include_raw_sbom is a flag to return the raw sbom field in the record.
- IncludeRawSbom bool `protobuf:"varint,4,opt,name=include_raw_sbom,json=includeRawSbom,proto3" json:"include_raw_sbom,omitempty"`
-}
-
-func (x *Sbom2Filter) Reset() {
- *x = Sbom2Filter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sbom2Filter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sbom2Filter) ProtoMessage() {}
-
-func (x *Sbom2Filter) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sbom2Filter.ProtoReflect.Descriptor instead.
-func (*Sbom2Filter) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Sbom2Filter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Sbom2Filter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *Sbom2Filter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *Sbom2Filter) GetIncludeRawSbom() bool {
- if x != nil {
- return x.IncludeRawSbom
- }
- return false
-}
-
-type ComponentGraph_Node struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to TypedNode:
- //
- // *ComponentGraph_Node_Package
- // *ComponentGraph_Node_File
- TypedNode isComponentGraph_Node_TypedNode `protobuf_oneof:"typed_node"`
-}
-
-func (x *ComponentGraph_Node) Reset() {
- *x = ComponentGraph_Node{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ComponentGraph_Node) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ComponentGraph_Node) ProtoMessage() {}
-
-func (x *ComponentGraph_Node) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ComponentGraph_Node.ProtoReflect.Descriptor instead.
-func (*ComponentGraph_Node) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (m *ComponentGraph_Node) GetTypedNode() isComponentGraph_Node_TypedNode {
- if m != nil {
- return m.TypedNode
- }
- return nil
-}
-
-func (x *ComponentGraph_Node) GetPackage() *Package2 {
- if x, ok := x.GetTypedNode().(*ComponentGraph_Node_Package); ok {
- return x.Package
- }
- return nil
-}
-
-func (x *ComponentGraph_Node) GetFile() *File2 {
- if x, ok := x.GetTypedNode().(*ComponentGraph_Node_File); ok {
- return x.File
- }
- return nil
-}
-
-type isComponentGraph_Node_TypedNode interface {
- isComponentGraph_Node_TypedNode()
-}
-
-type ComponentGraph_Node_Package struct {
- Package *Package2 `protobuf:"bytes,1,opt,name=package,proto3,oneof"`
-}
-
-type ComponentGraph_Node_File struct {
- File *File2 `protobuf:"bytes,2,opt,name=file,proto3,oneof"`
-}
-
-func (*ComponentGraph_Node_Package) isComponentGraph_Node_TypedNode() {}
-
-func (*ComponentGraph_Node_File) isComponentGraph_Node_TypedNode() {}
-
-type ComponentGraph_Edge struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- SubjectId string `protobuf:"bytes,1,opt,name=subject_id,json=subjectId,proto3" json:"subject_id,omitempty"`
- PredicateId string `protobuf:"bytes,2,opt,name=predicate_id,json=predicateId,proto3" json:"predicate_id,omitempty"`
- Type ComponentGraph_Edge_Type `protobuf:"varint,3,opt,name=type,proto3,enum=chainguard.platform.tenant.ComponentGraph_Edge_Type" json:"type,omitempty"`
-}
-
-func (x *ComponentGraph_Edge) Reset() {
- *x = ComponentGraph_Edge{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sbom_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ComponentGraph_Edge) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ComponentGraph_Edge) ProtoMessage() {}
-
-func (x *ComponentGraph_Edge) ProtoReflect() protoreflect.Message {
- mi := &file_sbom_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ComponentGraph_Edge.ProtoReflect.Descriptor instead.
-func (*ComponentGraph_Edge) Descriptor() ([]byte, []int) {
- return file_sbom_platform_proto_rawDescGZIP(), []int{1, 1}
-}
-
-func (x *ComponentGraph_Edge) GetSubjectId() string {
- if x != nil {
- return x.SubjectId
- }
- return ""
-}
-
-func (x *ComponentGraph_Edge) GetPredicateId() string {
- if x != nil {
- return x.PredicateId
- }
- return ""
-}
-
-func (x *ComponentGraph_Edge) GetType() ComponentGraph_Edge_Type {
- if x != nil {
- return x.Type
- }
- return ComponentGraph_Edge_UNKNOWN
-}
-
-var File_sbom_platform_proto protoreflect.FileDescriptor
-
-var file_sbom_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
- 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0x86, 0x04, 0x0a, 0x05, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08,
- 0x72, 0x61, 0x77, 0x5f, 0x73, 0x62, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
- 0x72, 0x61, 0x77, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61,
- 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73,
- 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65,
- 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3d,
- 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a,
- 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x22, 0x32, 0x0a, 0x06,
- 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
- 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10,
- 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02,
- 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x9b, 0x04, 0x0a, 0x0e,
- 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x45,
- 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
- 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05,
- 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68,
- 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x1a, 0x8f, 0x01, 0x0a,
- 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32, 0x48, 0x00, 0x52, 0x07,
- 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x32, 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65,
- 0x42, 0x0c, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x1a, 0xe8,
- 0x01, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6a, 0x65,
- 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62,
- 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72,
- 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72,
- 0x61, 0x70, 0x68, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
- 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x53, 0x43,
- 0x52, 0x49, 0x42, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41,
- 0x49, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x53,
- 0x5f, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54,
- 0x45, 0x44, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x04, 0x22, 0x98, 0x01, 0x0a, 0x08, 0x50, 0x61,
- 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x20,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x70, 0x75, 0x72, 0x6c, 0x22, 0x47, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x32, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x44, 0x0a,
- 0x09, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
- 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
- 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x28,
- 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x62,
- 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x52, 0x61, 0x77, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x6f, 0x0a, 0x05, 0x53, 0x62, 0x6f, 0x6d,
- 0x73, 0x12, 0x66, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x02, 0x8a, 0x05, 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64,
- 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
-}
-
-var (
- file_sbom_platform_proto_rawDescOnce sync.Once
- file_sbom_platform_proto_rawDescData = file_sbom_platform_proto_rawDesc
-)
-
-func file_sbom_platform_proto_rawDescGZIP() []byte {
- file_sbom_platform_proto_rawDescOnce.Do(func() {
- file_sbom_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_sbom_platform_proto_rawDescData)
- })
- return file_sbom_platform_proto_rawDescData
-}
-
-var file_sbom_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_sbom_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_sbom_platform_proto_goTypes = []interface{}{
- (Sbom2_Source)(0), // 0: chainguard.platform.tenant.Sbom2.Source
- (ComponentGraph_Edge_Type)(0), // 1: chainguard.platform.tenant.ComponentGraph.Edge.Type
- (*Sbom2)(nil), // 2: chainguard.platform.tenant.Sbom2
- (*ComponentGraph)(nil), // 3: chainguard.platform.tenant.ComponentGraph
- (*Package2)(nil), // 4: chainguard.platform.tenant.Package2
- (*File2)(nil), // 5: chainguard.platform.tenant.File2
- (*Sbom2List)(nil), // 6: chainguard.platform.tenant.Sbom2List
- (*Sbom2Filter)(nil), // 7: chainguard.platform.tenant.Sbom2Filter
- (*ComponentGraph_Node)(nil), // 8: chainguard.platform.tenant.ComponentGraph.Node
- (*ComponentGraph_Edge)(nil), // 9: chainguard.platform.tenant.ComponentGraph.Edge
- (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 11: chainguard.platform.common.UIDPFilter
-}
-var file_sbom_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.tenant.Sbom2.graph:type_name -> chainguard.platform.tenant.ComponentGraph
- 10, // 1: chainguard.platform.tenant.Sbom2.last_seen:type_name -> google.protobuf.Timestamp
- 10, // 2: chainguard.platform.tenant.Sbom2.generated_at:type_name -> google.protobuf.Timestamp
- 0, // 3: chainguard.platform.tenant.Sbom2.source:type_name -> chainguard.platform.tenant.Sbom2.Source
- 8, // 4: chainguard.platform.tenant.ComponentGraph.nodes:type_name -> chainguard.platform.tenant.ComponentGraph.Node
- 9, // 5: chainguard.platform.tenant.ComponentGraph.edges:type_name -> chainguard.platform.tenant.ComponentGraph.Edge
- 2, // 6: chainguard.platform.tenant.Sbom2List.items:type_name -> chainguard.platform.tenant.Sbom2
- 11, // 7: chainguard.platform.tenant.Sbom2Filter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 10, // 8: chainguard.platform.tenant.Sbom2Filter.active_since:type_name -> google.protobuf.Timestamp
- 4, // 9: chainguard.platform.tenant.ComponentGraph.Node.package:type_name -> chainguard.platform.tenant.Package2
- 5, // 10: chainguard.platform.tenant.ComponentGraph.Node.file:type_name -> chainguard.platform.tenant.File2
- 1, // 11: chainguard.platform.tenant.ComponentGraph.Edge.type:type_name -> chainguard.platform.tenant.ComponentGraph.Edge.Type
- 7, // 12: chainguard.platform.tenant.Sboms.List:input_type -> chainguard.platform.tenant.Sbom2Filter
- 6, // 13: chainguard.platform.tenant.Sboms.List:output_type -> chainguard.platform.tenant.Sbom2List
- 13, // [13:14] is the sub-list for method output_type
- 12, // [12:13] is the sub-list for method input_type
- 12, // [12:12] is the sub-list for extension type_name
- 12, // [12:12] is the sub-list for extension extendee
- 0, // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_sbom_platform_proto_init() }
-func file_sbom_platform_proto_init() {
- if File_sbom_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_sbom_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sbom2); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ComponentGraph); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Package2); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*File2); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sbom2List); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sbom2Filter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ComponentGraph_Node); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sbom_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ComponentGraph_Edge); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_sbom_platform_proto_msgTypes[0].OneofWrappers = []interface{}{}
- file_sbom_platform_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*ComponentGraph_Node_Package)(nil),
- (*ComponentGraph_Node_File)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_sbom_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_sbom_platform_proto_goTypes,
- DependencyIndexes: file_sbom_platform_proto_depIdxs,
- EnumInfos: file_sbom_platform_proto_enumTypes,
- MessageInfos: file_sbom_platform_proto_msgTypes,
- }.Build()
- File_sbom_platform_proto = out.File
- file_sbom_platform_proto_rawDesc = nil
- file_sbom_platform_proto_goTypes = nil
- file_sbom_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.gw.go b/proto/platform/tenant/v1/sbom.platform.pb.gw.go
deleted file mode 100644
index f807c51b..00000000
--- a/proto/platform/tenant/v1/sbom.platform.pb.gw.go
+++ /dev/null
@@ -1,164 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: sbom.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Sboms_List_0(ctx context.Context, marshaler runtime.Marshaler, client SbomsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Sbom2Filter
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Sboms_List_0(ctx context.Context, marshaler runtime.Marshaler, server SbomsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Sbom2Filter
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterSbomsHandlerServer registers the http handlers for service Sboms to "mux".
-// UnaryRPC :call SbomsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSbomsHandlerFromEndpoint instead.
-func RegisterSbomsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SbomsServer) error {
-
- mux.Handle("POST", pattern_Sboms_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Sboms/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Sboms/List"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Sboms_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Sboms_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterSbomsHandlerFromEndpoint is same as RegisterSbomsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterSbomsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterSbomsHandler(ctx, mux, conn)
-}
-
-// RegisterSbomsHandler registers the http handlers for service Sboms to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterSbomsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterSbomsHandlerClient(ctx, mux, NewSbomsClient(conn))
-}
-
-// RegisterSbomsHandlerClient registers the http handlers for service Sboms
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SbomsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SbomsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "SbomsClient" to call the correct interceptors.
-func RegisterSbomsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SbomsClient) error {
-
- mux.Handle("POST", pattern_Sboms_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Sboms/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Sboms/List"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Sboms_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Sboms_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Sboms_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Sboms", "List"}, ""))
-)
-
-var (
- forward_Sboms_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/sbom.platform.proto b/proto/platform/tenant/v1/sbom.platform.proto
deleted file mode 100644
index d1bf64dc..00000000
--- a/proto/platform/tenant/v1/sbom.platform.proto
+++ /dev/null
@@ -1,131 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantSbomProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Sboms {
- rpc List(Sbom2Filter) returns (Sbom2List) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_SBOMS_LIST]
- unscoped: true
- }
- };
- }
- }
-
-// Sbom represents a normalized SBOM that we have ingested into our datastore.
-// They are linked to Signatures via ID, as in they are 'children' of Signatures
-// There can be multiple of these that we keep.
-message Sbom2 {
- // id, The Sbom UIDP at which this Sbom resides in the hierarchy.
- string id = 1;
-
- // raw_sbom may or may not be useful in the long term, but for now to make
- // progress on this, we'll just yolo and serialize it here.
- bytes raw_sbom = 2;
-
- ComponentGraph graph = 3;
-
- // last_seen tracks the timestamp at which this sbom was last seen.
- // TODO(vaikas): Does this really make any sense?
- google.protobuf.Timestamp last_seen = 4;
-
- // tool holds the name of the tool that produced the SBOM.
- string tool = 5;
- // format holds whether the SBOM is SPDX, CycloneDX, or other.
- string format = 6;
- // generated_at holds when the SBOM was generated.
- google.protobuf.Timestamp generated_at = 7;
- // authors is zero or more authors concatenated.
- string authors = 8;
-
- // source is where the SBOM came from. For example, we want to know if sbom
- // was generated by us, or ingested.
- Source source = 9;
-
- // Type
- enum Source {
- UNKNOWN = 0;
- INGESTED = 1;
- GENERATED = 2;
- }
- // Name of the Sbom.
- string name = 10;
-
- // Short description of the Sbom
- string description = 11;
-
- // digest of the SBOM when ingested
- optional string digest = 12;
-}
-
-message ComponentGraph {
- repeated Node nodes = 1;
- repeated Edge edges = 2;
-
- message Node {
- oneof typed_node {
- Package2 package = 1;
- File2 file = 2;
- }
- }
-
- message Edge {
- string subject_id = 1;
- string predicate_id = 2;
- Type type = 3;
-
- enum Type {
- UNKNOWN = 0;
- DESCRIBES = 1;
- CONTAINS = 2;
- DEPENDS_ON = 3;
- GENERATED_FROM = 4;
- // and so on...; for inspiration, see https://spdx.github.io/spdx-spec/v2.3/relationships-between-SPDX-elements/
- }
- }
-}
-
-message Package2 {
- string id = 1;
- string name = 2;
- string version = 3;
- string license = 4;
- string description = 5;
- string purl = 6;
-}
-
-message File2 {
- // 3 was used for single type.
- reserved 3;
-
- string id = 1;
- string name = 2;
- repeated string types = 4;
-}
-
-message Sbom2List {
- repeated Sbom2 items = 1;
-}
-
-message Sbom2Filter {
- // id is the exact UID of the record.
- string id = 1;
-
- chainguard.platform.common.UIDPFilter uidp = 2;
-
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- google.protobuf.Timestamp active_since = 3;
- // include_raw_sbom is a flag to return the raw sbom field in the record.
- bool include_raw_sbom = 4;
-}
diff --git a/proto/platform/tenant/v1/sbom.platform_grpc.pb.go b/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
deleted file mode 100644
index 85c02032..00000000
--- a/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: sbom.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Sboms_List_FullMethodName = "/chainguard.platform.tenant.Sboms/List"
-)
-
-// SbomsClient is the client API for Sboms service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SbomsClient interface {
- List(ctx context.Context, in *Sbom2Filter, opts ...grpc.CallOption) (*Sbom2List, error)
-}
-
-type sbomsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSbomsClient(cc grpc.ClientConnInterface) SbomsClient {
- return &sbomsClient{cc}
-}
-
-func (c *sbomsClient) List(ctx context.Context, in *Sbom2Filter, opts ...grpc.CallOption) (*Sbom2List, error) {
- out := new(Sbom2List)
- err := c.cc.Invoke(ctx, Sboms_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SbomsServer is the server API for Sboms service.
-// All implementations must embed UnimplementedSbomsServer
-// for forward compatibility
-type SbomsServer interface {
- List(context.Context, *Sbom2Filter) (*Sbom2List, error)
- mustEmbedUnimplementedSbomsServer()
-}
-
-// UnimplementedSbomsServer must be embedded to have forward compatible implementations.
-type UnimplementedSbomsServer struct {
-}
-
-func (UnimplementedSbomsServer) List(context.Context, *Sbom2Filter) (*Sbom2List, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedSbomsServer) mustEmbedUnimplementedSbomsServer() {}
-
-// UnsafeSbomsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SbomsServer will
-// result in compilation errors.
-type UnsafeSbomsServer interface {
- mustEmbedUnimplementedSbomsServer()
-}
-
-func RegisterSbomsServer(s grpc.ServiceRegistrar, srv SbomsServer) {
- s.RegisterService(&Sboms_ServiceDesc, srv)
-}
-
-func _Sboms_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Sbom2Filter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SbomsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Sboms_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SbomsServer).List(ctx, req.(*Sbom2Filter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Sboms_ServiceDesc is the grpc.ServiceDesc for Sboms service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Sboms_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Sboms",
- HandlerType: (*SbomsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Sboms_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "sbom.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/signature.platform.pb.go b/proto/platform/tenant/v1/signature.platform.pb.go
deleted file mode 100644
index 40c8acfc..00000000
--- a/proto/platform/tenant/v1/signature.platform.pb.go
+++ /dev/null
@@ -1,731 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: signature.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Signature struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Signature UIDP at which this Signature resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the Signature.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this Signature.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // last_seen tracks the timestamp at which this signature was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // predicate_type is an optional field that captures the type of signed
- // metadata this signature has signed.
- // - For simple signatures (e.g. directly signed artifact), this will
- // be empty to represent the "null claim".
- // - For signed claims (e.g. attestations), this will hold the in-toto
- // predicate type of the signed claim.
- PredicateType string `protobuf:"bytes,5,opt,name=predicate_type,json=predicateType,proto3" json:"predicate_type,omitempty"`
- // Types that are assignable to Kind:
- //
- // *Signature_None
- // *Signature_Keyless_
- // *Signature_Key_
- Kind isSignature_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *Signature) Reset() {
- *x = Signature{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Signature) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Signature) ProtoMessage() {}
-
-func (x *Signature) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Signature.ProtoReflect.Descriptor instead.
-func (*Signature) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Signature) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Signature) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Signature) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Signature) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Signature) GetPredicateType() string {
- if x != nil {
- return x.PredicateType
- }
- return ""
-}
-
-func (m *Signature) GetKind() isSignature_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *Signature) GetNone() *emptypb.Empty {
- if x, ok := x.GetKind().(*Signature_None); ok {
- return x.None
- }
- return nil
-}
-
-func (x *Signature) GetKeyless() *Signature_Keyless {
- if x, ok := x.GetKind().(*Signature_Keyless_); ok {
- return x.Keyless
- }
- return nil
-}
-
-func (x *Signature) GetKey() *Signature_Key {
- if x, ok := x.GetKind().(*Signature_Key_); ok {
- return x.Key
- }
- return nil
-}
-
-type isSignature_Kind interface {
- isSignature_Kind()
-}
-
-type Signature_None struct {
- // none is the kind of signature that is attached when a policy
- // designates an image as "statically" trusted.
- None *emptypb.Empty `protobuf:"bytes,10,opt,name=none,proto3,oneof"`
-}
-
-type Signature_Keyless_ struct {
- // keyless is the kind of signature that is attached when a signature
- // was produced via a "keyless" flow.
- Keyless *Signature_Keyless `protobuf:"bytes,11,opt,name=keyless,proto3,oneof"`
-}
-
-type Signature_Key_ struct {
- // key is the kind of signature that is attached when a signature
- // was produced via a static key pair.
- Key *Signature_Key `protobuf:"bytes,12,opt,name=key,proto3,oneof"`
-}
-
-func (*Signature_None) isSignature_Kind() {}
-
-func (*Signature_Keyless_) isSignature_Kind() {}
-
-func (*Signature_Key_) isSignature_Kind() {}
-
-type SignatureList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Signature `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *SignatureList) Reset() {
- *x = SignatureList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SignatureList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SignatureList) ProtoMessage() {}
-
-func (x *SignatureList) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SignatureList.ProtoReflect.Descriptor instead.
-func (*SignatureList) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *SignatureList) GetItems() []*Signature {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type SignatureFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- PredicateType *string `protobuf:"bytes,4,opt,name=predicate_type,json=predicateType,proto3,oneof" json:"predicate_type,omitempty"`
-}
-
-func (x *SignatureFilter) Reset() {
- *x = SignatureFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SignatureFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SignatureFilter) ProtoMessage() {}
-
-func (x *SignatureFilter) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SignatureFilter.ProtoReflect.Descriptor instead.
-func (*SignatureFilter) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *SignatureFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *SignatureFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *SignatureFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *SignatureFilter) GetPredicateType() string {
- if x != nil && x.PredicateType != nil {
- return *x.PredicateType
- }
- return ""
-}
-
-type Signature_Keyless struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
- // TODO: Consider making this a oneof when other providers
- // start producing interesting claims.
- Github *Signature_Keyless_Github `protobuf:"bytes,3,opt,name=github,proto3" json:"github,omitempty"`
-}
-
-func (x *Signature_Keyless) Reset() {
- *x = Signature_Keyless{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Signature_Keyless) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Signature_Keyless) ProtoMessage() {}
-
-func (x *Signature_Keyless) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Signature_Keyless.ProtoReflect.Descriptor instead.
-func (*Signature_Keyless) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *Signature_Keyless) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *Signature_Keyless) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-func (x *Signature_Keyless) GetGithub() *Signature_Keyless_Github {
- if x != nil {
- return x.Github
- }
- return nil
-}
-
-type Signature_Key struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *Signature_Key) Reset() {
- *x = Signature_Key{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Signature_Key) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Signature_Key) ProtoMessage() {}
-
-func (x *Signature_Key) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Signature_Key.ProtoReflect.Descriptor instead.
-func (*Signature_Key) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-type Signature_Keyless_Github struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // OID: 1.3.6.1.4.1.57264.1.2
- WorkflowTrigger string `protobuf:"bytes,1,opt,name=workflow_trigger,json=workflowTrigger,proto3" json:"workflow_trigger,omitempty"`
- // OID: 1.3.6.1.4.1.57264.1.3
- WorkflowSha string `protobuf:"bytes,2,opt,name=workflow_sha,json=workflowSha,proto3" json:"workflow_sha,omitempty"`
- // OID: 1.3.6.1.4.1.57264.1.4
- WorkflowName string `protobuf:"bytes,3,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
- // OID: 1.3.6.1.4.1.57264.1.5
- WorkflowRepo string `protobuf:"bytes,4,opt,name=workflow_repo,json=workflowRepo,proto3" json:"workflow_repo,omitempty"`
- // OID: 1.3.6.1.4.1.57264.1.6
- WorkflowRef string `protobuf:"bytes,5,opt,name=workflow_ref,json=workflowRef,proto3" json:"workflow_ref,omitempty"`
-}
-
-func (x *Signature_Keyless_Github) Reset() {
- *x = Signature_Keyless_Github{}
- if protoimpl.UnsafeEnabled {
- mi := &file_signature_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Signature_Keyless_Github) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Signature_Keyless_Github) ProtoMessage() {}
-
-func (x *Signature_Keyless_Github) ProtoReflect() protoreflect.Message {
- mi := &file_signature_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Signature_Keyless_Github.ProtoReflect.Descriptor instead.
-func (*Signature_Keyless_Github) Descriptor() ([]byte, []int) {
- return file_signature_platform_proto_rawDescGZIP(), []int{0, 0, 0}
-}
-
-func (x *Signature_Keyless_Github) GetWorkflowTrigger() string {
- if x != nil {
- return x.WorkflowTrigger
- }
- return ""
-}
-
-func (x *Signature_Keyless_Github) GetWorkflowSha() string {
- if x != nil {
- return x.WorkflowSha
- }
- return ""
-}
-
-func (x *Signature_Keyless_Github) GetWorkflowName() string {
- if x != nil {
- return x.WorkflowName
- }
- return ""
-}
-
-func (x *Signature_Keyless_Github) GetWorkflowRepo() string {
- if x != nil {
- return x.WorkflowRepo
- }
- return ""
-}
-
-func (x *Signature_Keyless_Github) GetWorkflowRef() string {
- if x != nil {
- return x.WorkflowRef
- }
- return ""
-}
-
-var File_signature_platform_proto protoreflect.FileDescriptor
-
-var file_signature_platform_proto_rawDesc = []byte{
- 0x0a, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
- 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
- 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0xca, 0x05, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73,
- 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
- 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04,
- 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x18,
- 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79,
- 0x6c, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x12,
- 0x3d, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0xcf,
- 0x02, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73,
- 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75,
- 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4c, 0x0a, 0x06,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x47, 0x69, 0x74, 0x68,
- 0x75, 0x62, 0x52, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x1a, 0xc3, 0x01, 0x0a, 0x06, 0x47,
- 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
- 0x77, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
- 0x53, 0x68, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
- 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
- 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x21, 0x0a,
- 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x66,
- 0x1a, 0x05, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
- 0x4c, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67,
- 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xdf, 0x01,
- 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
- 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x3d, 0x0a,
- 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f,
- 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32,
- 0x9a, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x8b,
- 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xef, 0x04, 0x10, 0x01, 0x42, 0x74, 0x0a, 0x25,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
- 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
- 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_signature_platform_proto_rawDescOnce sync.Once
- file_signature_platform_proto_rawDescData = file_signature_platform_proto_rawDesc
-)
-
-func file_signature_platform_proto_rawDescGZIP() []byte {
- file_signature_platform_proto_rawDescOnce.Do(func() {
- file_signature_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_signature_platform_proto_rawDescData)
- })
- return file_signature_platform_proto_rawDescData
-}
-
-var file_signature_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_signature_platform_proto_goTypes = []interface{}{
- (*Signature)(nil), // 0: chainguard.platform.tenant.Signature
- (*SignatureList)(nil), // 1: chainguard.platform.tenant.SignatureList
- (*SignatureFilter)(nil), // 2: chainguard.platform.tenant.SignatureFilter
- (*Signature_Keyless)(nil), // 3: chainguard.platform.tenant.Signature.Keyless
- (*Signature_Key)(nil), // 4: chainguard.platform.tenant.Signature.Key
- (*Signature_Keyless_Github)(nil), // 5: chainguard.platform.tenant.Signature.Keyless.Github
- (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp
- (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
- (*v1.UIDPFilter)(nil), // 8: chainguard.platform.common.UIDPFilter
-}
-var file_signature_platform_proto_depIdxs = []int32{
- 6, // 0: chainguard.platform.tenant.Signature.last_seen:type_name -> google.protobuf.Timestamp
- 7, // 1: chainguard.platform.tenant.Signature.none:type_name -> google.protobuf.Empty
- 3, // 2: chainguard.platform.tenant.Signature.keyless:type_name -> chainguard.platform.tenant.Signature.Keyless
- 4, // 3: chainguard.platform.tenant.Signature.key:type_name -> chainguard.platform.tenant.Signature.Key
- 0, // 4: chainguard.platform.tenant.SignatureList.items:type_name -> chainguard.platform.tenant.Signature
- 8, // 5: chainguard.platform.tenant.SignatureFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 6, // 6: chainguard.platform.tenant.SignatureFilter.active_since:type_name -> google.protobuf.Timestamp
- 5, // 7: chainguard.platform.tenant.Signature.Keyless.github:type_name -> chainguard.platform.tenant.Signature.Keyless.Github
- 2, // 8: chainguard.platform.tenant.Signatures.List:input_type -> chainguard.platform.tenant.SignatureFilter
- 1, // 9: chainguard.platform.tenant.Signatures.List:output_type -> chainguard.platform.tenant.SignatureList
- 9, // [9:10] is the sub-list for method output_type
- 8, // [8:9] 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_signature_platform_proto_init() }
-func file_signature_platform_proto_init() {
- if File_signature_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_signature_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Signature); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_signature_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SignatureList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_signature_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SignatureFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_signature_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Signature_Keyless); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_signature_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Signature_Key); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_signature_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Signature_Keyless_Github); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_signature_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Signature_None)(nil),
- (*Signature_Keyless_)(nil),
- (*Signature_Key_)(nil),
- }
- file_signature_platform_proto_msgTypes[2].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_signature_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_signature_platform_proto_goTypes,
- DependencyIndexes: file_signature_platform_proto_depIdxs,
- MessageInfos: file_signature_platform_proto_msgTypes,
- }.Build()
- File_signature_platform_proto = out.File
- file_signature_platform_proto_rawDesc = nil
- file_signature_platform_proto_goTypes = nil
- file_signature_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/signature.platform.proto b/proto/platform/tenant/v1/signature.platform.proto
deleted file mode 100644
index d8ab1e92..00000000
--- a/proto/platform/tenant/v1/signature.platform.proto
+++ /dev/null
@@ -1,110 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantSignatureProto";
-
-package chainguard.platform.tenant;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Signatures {
- rpc List(SignatureFilter) returns (SignatureList) {
- option (google.api.http) = {
- get: "/tenant/v1/signatures"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_RECORD_SIGNATURES_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message Signature {
- // id, The Signature UIDP at which this Signature resides.
- string id = 1;
-
- // name of the Signature.
- string name = 2;
-
- // a short description of this Signature.
- string description = 3;
-
- // last_seen tracks the timestamp at which this signature was last seen.
- google.protobuf.Timestamp last_seen = 4;
-
- // predicate_type is an optional field that captures the type of signed
- // metadata this signature has signed.
- // - For simple signatures (e.g. directly signed artifact), this will
- // be empty to represent the "null claim".
- // - For signed claims (e.g. attestations), this will hold the in-toto
- // predicate type of the signed claim.
- string predicate_type = 5;
-
- oneof kind {
- // none is the kind of signature that is attached when a policy
- // designates an image as "statically" trusted.
- google.protobuf.Empty none = 10;
-
- // keyless is the kind of signature that is attached when a signature
- // was produced via a "keyless" flow.
- Keyless keyless = 11;
-
- // key is the kind of signature that is attached when a signature
- // was produced via a static key pair.
- Key key = 12;
- }
-
- message Keyless {
- string issuer = 1;
- string subject = 2;
-
- // TODO: Consider making this a oneof when other providers
- // start producing interesting claims.
- Github github = 3;
-
- message Github {
- // OID: 1.3.6.1.4.1.57264.1.2
- string workflow_trigger = 1;
-
- // OID: 1.3.6.1.4.1.57264.1.3
- string workflow_sha = 2;
-
- // OID: 1.3.6.1.4.1.57264.1.4
- string workflow_name = 3;
-
- // OID: 1.3.6.1.4.1.57264.1.5
- string workflow_repo = 4;
-
- // OID: 1.3.6.1.4.1.57264.1.6
- string workflow_ref = 5;
- }
- }
-
- message Key {
- // TODO: What useful information should we encode here?
- }
-}
-
-message SignatureList {
- repeated Signature items = 1;
-}
-
-message SignatureFilter {
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- google.protobuf.Timestamp active_since = 2;
-
- string name = 3;
-
- optional string predicate_type = 4;
-}
diff --git a/proto/platform/tenant/v1/signature.platform_grpc.pb.go b/proto/platform/tenant/v1/signature.platform_grpc.pb.go
deleted file mode 100644
index 86f0c51f..00000000
--- a/proto/platform/tenant/v1/signature.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: signature.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Signatures_List_FullMethodName = "/chainguard.platform.tenant.Signatures/List"
-)
-
-// SignaturesClient is the client API for Signatures service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SignaturesClient interface {
- List(ctx context.Context, in *SignatureFilter, opts ...grpc.CallOption) (*SignatureList, error)
-}
-
-type signaturesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSignaturesClient(cc grpc.ClientConnInterface) SignaturesClient {
- return &signaturesClient{cc}
-}
-
-func (c *signaturesClient) List(ctx context.Context, in *SignatureFilter, opts ...grpc.CallOption) (*SignatureList, error) {
- out := new(SignatureList)
- err := c.cc.Invoke(ctx, Signatures_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SignaturesServer is the server API for Signatures service.
-// All implementations must embed UnimplementedSignaturesServer
-// for forward compatibility
-type SignaturesServer interface {
- List(context.Context, *SignatureFilter) (*SignatureList, error)
- mustEmbedUnimplementedSignaturesServer()
-}
-
-// UnimplementedSignaturesServer must be embedded to have forward compatible implementations.
-type UnimplementedSignaturesServer struct {
-}
-
-func (UnimplementedSignaturesServer) List(context.Context, *SignatureFilter) (*SignatureList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedSignaturesServer) mustEmbedUnimplementedSignaturesServer() {}
-
-// UnsafeSignaturesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SignaturesServer will
-// result in compilation errors.
-type UnsafeSignaturesServer interface {
- mustEmbedUnimplementedSignaturesServer()
-}
-
-func RegisterSignaturesServer(s grpc.ServiceRegistrar, srv SignaturesServer) {
- s.RegisterService(&Signatures_ServiceDesc, srv)
-}
-
-func _Signatures_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SignatureFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SignaturesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Signatures_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SignaturesServer).List(ctx, req.(*SignatureFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Signatures_ServiceDesc is the grpc.ServiceDesc for Signatures service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Signatures_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Signatures",
- HandlerType: (*SignaturesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Signatures_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "signature.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/test/mock_attestations.go b/proto/platform/tenant/v1/test/mock_attestations.go
deleted file mode 100644
index 5ad40300..00000000
--- a/proto/platform/tenant/v1/test/mock_attestations.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.AttestationsClient = (*MockAttestationsClientt)(nil)
-
-type MockAttestationsClientt struct {
- OnList []AttestationsOnList
-}
-
-type AttestationsOnList struct {
- Given *tenant.AttestationFilter
- List *tenant.AttestationList
- Error error
-}
-
-func (m MockAttestationsClientt) List(_ context.Context, given *tenant.AttestationFilter, _ ...grpc.CallOption) (*tenant.AttestationList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
deleted file mode 100644
index d1777b69..00000000
--- a/proto/platform/tenant/v1/test/mock_client.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-type MockTenantClient struct {
- OnClose error
-
- SbomsClient MockSbomsClient
- SignaturesClient MockSignaturesClient
- VulnReportsClient MockVulnReportsClient
- AttestationClient MockAttestationsClientt
-}
-
-var _ tenant.Clients = (*MockTenantClient)(nil)
-
-func (m MockTenantClient) Sboms() tenant.SbomsClient {
- return &m.SbomsClient
-}
-
-func (m MockTenantClient) Signatures() tenant.SignaturesClient {
- return &m.SignaturesClient
-}
-
-func (m MockTenantClient) VulnReports() tenant.VulnReportsClient {
- return &m.VulnReportsClient
-}
-
-func (m MockTenantClient) Attestations() tenant.AttestationsClient {
- return &m.AttestationClient
-}
-
-func (m MockTenantClient) Close() error {
- return m.OnClose
-}
diff --git a/proto/platform/tenant/v1/test/mock_sboms.go b/proto/platform/tenant/v1/test/mock_sboms.go
deleted file mode 100644
index 3e94ccaf..00000000
--- a/proto/platform/tenant/v1/test/mock_sboms.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.SbomsClient = (*MockSbomsClient)(nil)
-
-type MockSbomsClient struct {
- OnList []SbomsOnList
-}
-
-type SbomsOnList struct {
- Given *tenant.Sbom2Filter
- List *tenant.Sbom2List
- Error error
-}
-
-func (m MockSbomsClient) List(_ context.Context, given *tenant.Sbom2Filter, _ ...grpc.CallOption) (*tenant.Sbom2List, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_signatures.go b/proto/platform/tenant/v1/test/mock_signatures.go
deleted file mode 100644
index 098311e4..00000000
--- a/proto/platform/tenant/v1/test/mock_signatures.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.SignaturesClient = (*MockSignaturesClient)(nil)
-
-type MockSignaturesClient struct {
- OnList []SignaturesOnList
-}
-
-type SignaturesOnList struct {
- Given *tenant.SignatureFilter
- List *tenant.SignatureList
- Error error
-}
-
-func (m MockSignaturesClient) List(_ context.Context, given *tenant.SignatureFilter, _ ...grpc.CallOption) (*tenant.SignatureList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_vuln.go b/proto/platform/tenant/v1/test/mock_vuln.go
deleted file mode 100644
index 60a2d753..00000000
--- a/proto/platform/tenant/v1/test/mock_vuln.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.VulnReportsClient = (*MockVulnReportsClient)(nil)
-
-type MockVulnReportsClient struct {
- OnList []VulnReportsOnList
-}
-
-type VulnReportsOnList struct {
- Given *tenant.VulnReportFilter
- List *tenant.VulnReportList
- Error error
-}
-
-func (m MockVulnReportsClient) List(_ context.Context, given *tenant.VulnReportFilter, _ ...grpc.CallOption) (*tenant.VulnReportList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.go b/proto/platform/tenant/v1/vuln.platform.pb.go
deleted file mode 100644
index 96be9e43..00000000
--- a/proto/platform/tenant/v1/vuln.platform.pb.go
+++ /dev/null
@@ -1,1138 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: vuln.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type VulnerabilityRecord_Severity int32
-
-const (
- VulnerabilityRecord_UNKNOWN VulnerabilityRecord_Severity = 0
- VulnerabilityRecord_LOW VulnerabilityRecord_Severity = 1
- VulnerabilityRecord_MEDIUM VulnerabilityRecord_Severity = 2
- VulnerabilityRecord_HIGH VulnerabilityRecord_Severity = 3
- VulnerabilityRecord_CRITICAL VulnerabilityRecord_Severity = 4
-)
-
-// Enum value maps for VulnerabilityRecord_Severity.
-var (
- VulnerabilityRecord_Severity_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "LOW",
- 2: "MEDIUM",
- 3: "HIGH",
- 4: "CRITICAL",
- }
- VulnerabilityRecord_Severity_value = map[string]int32{
- "UNKNOWN": 0,
- "LOW": 1,
- "MEDIUM": 2,
- "HIGH": 3,
- "CRITICAL": 4,
- }
-)
-
-func (x VulnerabilityRecord_Severity) Enum() *VulnerabilityRecord_Severity {
- p := new(VulnerabilityRecord_Severity)
- *p = x
- return p
-}
-
-func (x VulnerabilityRecord_Severity) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (VulnerabilityRecord_Severity) Descriptor() protoreflect.EnumDescriptor {
- return file_vuln_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (VulnerabilityRecord_Severity) Type() protoreflect.EnumType {
- return &file_vuln_platform_proto_enumTypes[0]
-}
-
-func (x VulnerabilityRecord_Severity) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use VulnerabilityRecord_Severity.Descriptor instead.
-func (VulnerabilityRecord_Severity) EnumDescriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{3, 0}
-}
-
-type Fix_State int32
-
-const (
- Fix_UNKNOWN Fix_State = 0
- Fix_FIXED Fix_State = 1
- Fix_NOT_FIXED Fix_State = 2
- Fix_WONT_FIX Fix_State = 3
-)
-
-// Enum value maps for Fix_State.
-var (
- Fix_State_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "FIXED",
- 2: "NOT_FIXED",
- 3: "WONT_FIX",
- }
- Fix_State_value = map[string]int32{
- "UNKNOWN": 0,
- "FIXED": 1,
- "NOT_FIXED": 2,
- "WONT_FIX": 3,
- }
-)
-
-func (x Fix_State) Enum() *Fix_State {
- p := new(Fix_State)
- *p = x
- return p
-}
-
-func (x Fix_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Fix_State) Descriptor() protoreflect.EnumDescriptor {
- return file_vuln_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (Fix_State) Type() protoreflect.EnumType {
- return &file_vuln_platform_proto_enumTypes[1]
-}
-
-func (x Fix_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Fix_State.Descriptor instead.
-func (Fix_State) EnumDescriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{4, 0}
-}
-
-type VulnReport struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The VulnReport UIDP at which this VulnReport resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // vulnerability_db_last_build_time holds the time when the vulnerability database was built last time.
- VulnerabilityDbLastBuildTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=vulnerability_db_last_build_time,json=vulnerabilityDbLastBuildTime,proto3" json:"vulnerability_db_last_build_time,omitempty"`
- // Report's list of vulnerability matches(s).
- VulnerabilityMatches []*VulnerabilityMatch `protobuf:"bytes,3,rep,name=vulnerability_matches,json=vulnerabilityMatches,proto3" json:"vulnerability_matches,omitempty"`
- // scanner contains some information about the scanner used to generate the report.
- Scanner *Scanner `protobuf:"bytes,4,opt,name=scanner,proto3" json:"scanner,omitempty"`
- // report_generation tracks the timestamp at which this report was generated.
- ReportGeneration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=report_generation,json=reportGeneration,proto3" json:"report_generation,omitempty"`
- // raw_vuln_report may or may not be useful in the long term, but for now to make
- // progress on this, we'll just yolo and serialize it here.
- RawVulnReport []byte `protobuf:"bytes,6,opt,name=raw_vuln_report,json=rawVulnReport,proto3" json:"raw_vuln_report,omitempty"`
- // last_seen tracks the timestamp at which this vuln report was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
-}
-
-func (x *VulnReport) Reset() {
- *x = VulnReport{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnReport) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnReport) ProtoMessage() {}
-
-func (x *VulnReport) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnReport.ProtoReflect.Descriptor instead.
-func (*VulnReport) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *VulnReport) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnReport) GetVulnerabilityDbLastBuildTime() *timestamppb.Timestamp {
- if x != nil {
- return x.VulnerabilityDbLastBuildTime
- }
- return nil
-}
-
-func (x *VulnReport) GetVulnerabilityMatches() []*VulnerabilityMatch {
- if x != nil {
- return x.VulnerabilityMatches
- }
- return nil
-}
-
-func (x *VulnReport) GetScanner() *Scanner {
- if x != nil {
- return x.Scanner
- }
- return nil
-}
-
-func (x *VulnReport) GetReportGeneration() *timestamppb.Timestamp {
- if x != nil {
- return x.ReportGeneration
- }
- return nil
-}
-
-func (x *VulnReport) GetRawVulnReport() []byte {
- if x != nil {
- return x.RawVulnReport
- }
- return nil
-}
-
-func (x *VulnReport) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-type Scanner struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // name contains the vendor name of the scanner.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // version holds the version of the used scanner to generate the report.
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
-}
-
-func (x *Scanner) Reset() {
- *x = Scanner{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Scanner) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Scanner) ProtoMessage() {}
-
-func (x *Scanner) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Scanner.ProtoReflect.Descriptor instead.
-func (*Scanner) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Scanner) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Scanner) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-type VulnerabilityMatch struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Vulnerability holds information about the found vulnerability.
- Vulnerability *VulnerabilityRecord `protobuf:"bytes,1,opt,name=vulnerability,proto3" json:"vulnerability,omitempty"`
- // Package affected by this vulnerability.
- Pkg *Package2 `protobuf:"bytes,2,opt,name=pkg,proto3" json:"pkg,omitempty"`
- // Fix related data about this vulnerability.
- Fix *Fix `protobuf:"bytes,3,opt,name=fix,proto3,oneof" json:"fix,omitempty"`
-}
-
-func (x *VulnerabilityMatch) Reset() {
- *x = VulnerabilityMatch{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityMatch) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityMatch) ProtoMessage() {}
-
-func (x *VulnerabilityMatch) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityMatch.ProtoReflect.Descriptor instead.
-func (*VulnerabilityMatch) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *VulnerabilityMatch) GetVulnerability() *VulnerabilityRecord {
- if x != nil {
- return x.Vulnerability
- }
- return nil
-}
-
-func (x *VulnerabilityMatch) GetPkg() *Package2 {
- if x != nil {
- return x.Pkg
- }
- return nil
-}
-
-func (x *VulnerabilityMatch) GetFix() *Fix {
- if x != nil {
- return x.Fix
- }
- return nil
-}
-
-type VulnerabilityRecord struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id of the vulnerability e.g. CVE_1231-12.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // a short description of this vulnerability.
- Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
- // severity is the value representing the severity of the vulnerability
- Severity VulnerabilityRecord_Severity `protobuf:"varint,3,opt,name=severity,proto3,enum=chainguard.platform.tenant.VulnerabilityRecord_Severity" json:"severity,omitempty"`
- // source from where the vulnerability information was obtained, e.g. nvd, github, osv.
- Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"`
- // List of cvss information about the exploitability of the vulnerability.
- Cvss []*VulnerabilityRecord_Cvss `protobuf:"bytes,5,rep,name=cvss,proto3" json:"cvss,omitempty"`
- // List of cpe_uri on which the vulnerability was found.
- CpeUri []string `protobuf:"bytes,6,rep,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"`
- // URLs related to this vulnerability.
- RelatedUrls []string `protobuf:"bytes,7,rep,name=related_urls,json=relatedUrls,proto3" json:"related_urls,omitempty"`
- // advisories related to this vulnerability.
- Advisories map[string]string `protobuf:"bytes,8,rep,name=advisories,proto3" json:"advisories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // related vulnerabilities to the main vulnerability reported here.
- RelatedVulnerabilities []*VulnerabilityRecord_RelatedVulnerability `protobuf:"bytes,9,rep,name=related_vulnerabilities,json=relatedVulnerabilities,proto3" json:"related_vulnerabilities,omitempty"`
- // display_id is the normalized value of the vulnerability ID often defined by a CVE-ID.
- DisplayId string `protobuf:"bytes,10,opt,name=display_id,json=displayId,proto3" json:"display_id,omitempty"`
-}
-
-func (x *VulnerabilityRecord) Reset() {
- *x = VulnerabilityRecord{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityRecord) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityRecord) ProtoMessage() {}
-
-func (x *VulnerabilityRecord) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityRecord.ProtoReflect.Descriptor instead.
-func (*VulnerabilityRecord) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *VulnerabilityRecord) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnerabilityRecord) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *VulnerabilityRecord) GetSeverity() VulnerabilityRecord_Severity {
- if x != nil {
- return x.Severity
- }
- return VulnerabilityRecord_UNKNOWN
-}
-
-func (x *VulnerabilityRecord) GetSource() string {
- if x != nil {
- return x.Source
- }
- return ""
-}
-
-func (x *VulnerabilityRecord) GetCvss() []*VulnerabilityRecord_Cvss {
- if x != nil {
- return x.Cvss
- }
- return nil
-}
-
-func (x *VulnerabilityRecord) GetCpeUri() []string {
- if x != nil {
- return x.CpeUri
- }
- return nil
-}
-
-func (x *VulnerabilityRecord) GetRelatedUrls() []string {
- if x != nil {
- return x.RelatedUrls
- }
- return nil
-}
-
-func (x *VulnerabilityRecord) GetAdvisories() map[string]string {
- if x != nil {
- return x.Advisories
- }
- return nil
-}
-
-func (x *VulnerabilityRecord) GetRelatedVulnerabilities() []*VulnerabilityRecord_RelatedVulnerability {
- if x != nil {
- return x.RelatedVulnerabilities
- }
- return nil
-}
-
-func (x *VulnerabilityRecord) GetDisplayId() string {
- if x != nil {
- return x.DisplayId
- }
- return ""
-}
-
-type Fix struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // List of in versions of the package on which the vulnerability has been solved.
- Versions []string `protobuf:"bytes,1,rep,name=versions,proto3" json:"versions,omitempty"`
- // state reflects the state of the fix, e.g. fixed, unknown, not-fixed, won't-fix.
- State Fix_State `protobuf:"varint,2,opt,name=state,proto3,enum=chainguard.platform.tenant.Fix_State" json:"state,omitempty"`
-}
-
-func (x *Fix) Reset() {
- *x = Fix{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Fix) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Fix) ProtoMessage() {}
-
-func (x *Fix) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Fix.ProtoReflect.Descriptor instead.
-func (*Fix) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Fix) GetVersions() []string {
- if x != nil {
- return x.Versions
- }
- return nil
-}
-
-func (x *Fix) GetState() Fix_State {
- if x != nil {
- return x.State
- }
- return Fix_UNKNOWN
-}
-
-type VulnReportList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*VulnReport `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *VulnReportList) Reset() {
- *x = VulnReportList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnReportList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnReportList) ProtoMessage() {}
-
-func (x *VulnReportList) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnReportList.ProtoReflect.Descriptor instead.
-func (*VulnReportList) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *VulnReportList) GetItems() []*VulnReport {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type VulnReportFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // include_raw_vuln_report is a flag to return a list of reports containing the raw report.
- IncludeRawVulnReport bool `protobuf:"varint,6,opt,name=include_raw_vuln_report,json=includeRawVulnReport,proto3" json:"include_raw_vuln_report,omitempty"`
-}
-
-func (x *VulnReportFilter) Reset() {
- *x = VulnReportFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnReportFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnReportFilter) ProtoMessage() {}
-
-func (x *VulnReportFilter) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnReportFilter.ProtoReflect.Descriptor instead.
-func (*VulnReportFilter) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *VulnReportFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnReportFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *VulnReportFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *VulnReportFilter) GetIncludeRawVulnReport() bool {
- if x != nil {
- return x.IncludeRawVulnReport
- }
- return false
-}
-
-type VulnerabilityRecord_Cvss struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
- Score string `protobuf:"bytes,1,opt,name=score,proto3" json:"score,omitempty"`
- // CVSS version used to populate score and severity.
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
-}
-
-func (x *VulnerabilityRecord_Cvss) Reset() {
- *x = VulnerabilityRecord_Cvss{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityRecord_Cvss) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityRecord_Cvss) ProtoMessage() {}
-
-func (x *VulnerabilityRecord_Cvss) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityRecord_Cvss.ProtoReflect.Descriptor instead.
-func (*VulnerabilityRecord_Cvss) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *VulnerabilityRecord_Cvss) GetScore() string {
- if x != nil {
- return x.Score
- }
- return ""
-}
-
-func (x *VulnerabilityRecord_Cvss) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-type VulnerabilityRecord_RelatedVulnerability struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ID of the vulnerability.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Source from where the vulnerability information was obtained, e.g. nvd, github, osv.
- Source string `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`
-}
-
-func (x *VulnerabilityRecord_RelatedVulnerability) Reset() {
- *x = VulnerabilityRecord_RelatedVulnerability{}
- if protoimpl.UnsafeEnabled {
- mi := &file_vuln_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *VulnerabilityRecord_RelatedVulnerability) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*VulnerabilityRecord_RelatedVulnerability) ProtoMessage() {}
-
-func (x *VulnerabilityRecord_RelatedVulnerability) ProtoReflect() protoreflect.Message {
- mi := &file_vuln_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use VulnerabilityRecord_RelatedVulnerability.ProtoReflect.Descriptor instead.
-func (*VulnerabilityRecord_RelatedVulnerability) Descriptor() ([]byte, []int) {
- return file_vuln_platform_proto_rawDescGZIP(), []int{3, 2}
-}
-
-func (x *VulnerabilityRecord_RelatedVulnerability) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *VulnerabilityRecord_RelatedVulnerability) GetSource() string {
- if x != nil {
- return x.Source
- }
- return ""
-}
-
-var File_vuln_platform_proto protoreflect.FileDescriptor
-
-var file_vuln_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x76, 0x75, 0x6c, 0x6e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
- 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64,
- 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x03, 0x0a, 0x0a, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75,
- 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42,
- 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x15, 0x76, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x14, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a,
- 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e,
- 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x11,
- 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x75, 0x6c,
- 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
- 0x72, 0x61, 0x77, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a,
- 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
- 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
- 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22,
- 0xe3, 0x01, 0x0a, 0x12, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
- 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65,
- 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0d,
- 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a,
- 0x03, 0x70, 0x6b, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32,
- 0x52, 0x03, 0x70, 0x6b, 0x67, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x46, 0x69, 0x78, 0x48, 0x00, 0x52, 0x03, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a,
- 0x04, 0x5f, 0x66, 0x69, 0x78, 0x22, 0xb7, 0x06, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a,
- 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x54, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56,
- 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f,
- 0x72, 0x64, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76,
- 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a,
- 0x04, 0x63, 0x76, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x76, 0x73,
- 0x73, 0x52, 0x04, 0x63, 0x76, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75,
- 0x72, 0x69, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69,
- 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55,
- 0x72, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65,
- 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72,
- 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
- 0x72, 0x69, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x17, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x56, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6c,
- 0x61, 0x74, 0x65, 0x64, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
- 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69,
- 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
- 0x49, 0x64, 0x1a, 0x36, 0x0a, 0x04, 0x43, 0x76, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
- 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
- 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x64,
- 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x14, 0x52, 0x65, 0x6c,
- 0x61, 0x74, 0x65, 0x64, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
- 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76,
- 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
- 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d,
- 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10,
- 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x22,
- 0x9c, 0x01, 0x0a, 0x03, 0x46, 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x46, 0x69, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x22, 0x3c, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
- 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10,
- 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x02,
- 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x4f, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x58, 0x10, 0x03, 0x22, 0x4e,
- 0x0a, 0x0e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x3c, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xe0,
- 0x01, 0x0a, 0x10, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
- 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
- 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x35,
- 0x0a, 0x17, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x75,
- 0x6c, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x61, 0x77, 0x56, 0x75, 0x6c, 0x6e, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10,
- 0x05, 0x32, 0x9e, 0x01, 0x0a, 0x0b, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f,
- 0x72, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x94, 0x05,
- 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_vuln_platform_proto_rawDescOnce sync.Once
- file_vuln_platform_proto_rawDescData = file_vuln_platform_proto_rawDesc
-)
-
-func file_vuln_platform_proto_rawDescGZIP() []byte {
- file_vuln_platform_proto_rawDescOnce.Do(func() {
- file_vuln_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_vuln_platform_proto_rawDescData)
- })
- return file_vuln_platform_proto_rawDescData
-}
-
-var file_vuln_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_vuln_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
-var file_vuln_platform_proto_goTypes = []interface{}{
- (VulnerabilityRecord_Severity)(0), // 0: chainguard.platform.tenant.VulnerabilityRecord.Severity
- (Fix_State)(0), // 1: chainguard.platform.tenant.Fix.State
- (*VulnReport)(nil), // 2: chainguard.platform.tenant.VulnReport
- (*Scanner)(nil), // 3: chainguard.platform.tenant.Scanner
- (*VulnerabilityMatch)(nil), // 4: chainguard.platform.tenant.VulnerabilityMatch
- (*VulnerabilityRecord)(nil), // 5: chainguard.platform.tenant.VulnerabilityRecord
- (*Fix)(nil), // 6: chainguard.platform.tenant.Fix
- (*VulnReportList)(nil), // 7: chainguard.platform.tenant.VulnReportList
- (*VulnReportFilter)(nil), // 8: chainguard.platform.tenant.VulnReportFilter
- (*VulnerabilityRecord_Cvss)(nil), // 9: chainguard.platform.tenant.VulnerabilityRecord.Cvss
- nil, // 10: chainguard.platform.tenant.VulnerabilityRecord.AdvisoriesEntry
- (*VulnerabilityRecord_RelatedVulnerability)(nil), // 11: chainguard.platform.tenant.VulnerabilityRecord.RelatedVulnerability
- (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
- (*Package2)(nil), // 13: chainguard.platform.tenant.Package2
- (*v1.UIDPFilter)(nil), // 14: chainguard.platform.common.UIDPFilter
-}
-var file_vuln_platform_proto_depIdxs = []int32{
- 12, // 0: chainguard.platform.tenant.VulnReport.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 4, // 1: chainguard.platform.tenant.VulnReport.vulnerability_matches:type_name -> chainguard.platform.tenant.VulnerabilityMatch
- 3, // 2: chainguard.platform.tenant.VulnReport.scanner:type_name -> chainguard.platform.tenant.Scanner
- 12, // 3: chainguard.platform.tenant.VulnReport.report_generation:type_name -> google.protobuf.Timestamp
- 12, // 4: chainguard.platform.tenant.VulnReport.last_seen:type_name -> google.protobuf.Timestamp
- 5, // 5: chainguard.platform.tenant.VulnerabilityMatch.vulnerability:type_name -> chainguard.platform.tenant.VulnerabilityRecord
- 13, // 6: chainguard.platform.tenant.VulnerabilityMatch.pkg:type_name -> chainguard.platform.tenant.Package2
- 6, // 7: chainguard.platform.tenant.VulnerabilityMatch.fix:type_name -> chainguard.platform.tenant.Fix
- 0, // 8: chainguard.platform.tenant.VulnerabilityRecord.severity:type_name -> chainguard.platform.tenant.VulnerabilityRecord.Severity
- 9, // 9: chainguard.platform.tenant.VulnerabilityRecord.cvss:type_name -> chainguard.platform.tenant.VulnerabilityRecord.Cvss
- 10, // 10: chainguard.platform.tenant.VulnerabilityRecord.advisories:type_name -> chainguard.platform.tenant.VulnerabilityRecord.AdvisoriesEntry
- 11, // 11: chainguard.platform.tenant.VulnerabilityRecord.related_vulnerabilities:type_name -> chainguard.platform.tenant.VulnerabilityRecord.RelatedVulnerability
- 1, // 12: chainguard.platform.tenant.Fix.state:type_name -> chainguard.platform.tenant.Fix.State
- 2, // 13: chainguard.platform.tenant.VulnReportList.items:type_name -> chainguard.platform.tenant.VulnReport
- 14, // 14: chainguard.platform.tenant.VulnReportFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 12, // 15: chainguard.platform.tenant.VulnReportFilter.active_since:type_name -> google.protobuf.Timestamp
- 8, // 16: chainguard.platform.tenant.VulnReports.List:input_type -> chainguard.platform.tenant.VulnReportFilter
- 7, // 17: chainguard.platform.tenant.VulnReports.List:output_type -> chainguard.platform.tenant.VulnReportList
- 17, // [17:18] is the sub-list for method output_type
- 16, // [16:17] is the sub-list for method input_type
- 16, // [16:16] is the sub-list for extension type_name
- 16, // [16:16] is the sub-list for extension extendee
- 0, // [0:16] is the sub-list for field type_name
-}
-
-func init() { file_vuln_platform_proto_init() }
-func file_vuln_platform_proto_init() {
- if File_vuln_platform_proto != nil {
- return
- }
- file_sbom_platform_proto_init()
- if !protoimpl.UnsafeEnabled {
- file_vuln_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnReport); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Scanner); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityMatch); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityRecord); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Fix); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnReportList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnReportFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityRecord_Cvss); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_vuln_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityRecord_RelatedVulnerability); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_vuln_platform_proto_msgTypes[2].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_vuln_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 10,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_vuln_platform_proto_goTypes,
- DependencyIndexes: file_vuln_platform_proto_depIdxs,
- EnumInfos: file_vuln_platform_proto_enumTypes,
- MessageInfos: file_vuln_platform_proto_msgTypes,
- }.Build()
- File_vuln_platform_proto = out.File
- file_vuln_platform_proto_rawDesc = nil
- file_vuln_platform_proto_goTypes = nil
- file_vuln_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.gw.go b/proto/platform/tenant/v1/vuln.platform.pb.gw.go
deleted file mode 100644
index 9f610158..00000000
--- a/proto/platform/tenant/v1/vuln.platform.pb.gw.go
+++ /dev/null
@@ -1,166 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: vuln.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_VulnReports_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_VulnReports_List_0(ctx context.Context, marshaler runtime.Marshaler, client VulnReportsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnReportFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_VulnReports_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_VulnReports_List_0(ctx context.Context, marshaler runtime.Marshaler, server VulnReportsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq VulnReportFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_VulnReports_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterVulnReportsHandlerServer registers the http handlers for service VulnReports to "mux".
-// UnaryRPC :call VulnReportsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterVulnReportsHandlerFromEndpoint instead.
-func RegisterVulnReportsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server VulnReportsServer) error {
-
- mux.Handle("GET", pattern_VulnReports_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.VulnReports/List", runtime.WithHTTPPathPattern("/tenant/v1/vulnreports"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_VulnReports_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_VulnReports_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterVulnReportsHandlerFromEndpoint is same as RegisterVulnReportsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterVulnReportsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterVulnReportsHandler(ctx, mux, conn)
-}
-
-// RegisterVulnReportsHandler registers the http handlers for service VulnReports to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterVulnReportsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterVulnReportsHandlerClient(ctx, mux, NewVulnReportsClient(conn))
-}
-
-// RegisterVulnReportsHandlerClient registers the http handlers for service VulnReports
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "VulnReportsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "VulnReportsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "VulnReportsClient" to call the correct interceptors.
-func RegisterVulnReportsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client VulnReportsClient) error {
-
- mux.Handle("GET", pattern_VulnReports_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.VulnReports/List", runtime.WithHTTPPathPattern("/tenant/v1/vulnreports"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_VulnReports_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_VulnReports_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_VulnReports_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "vulnreports"}, ""))
-)
-
-var (
- forward_VulnReports_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/vuln.platform.proto b/proto/platform/tenant/v1/vuln.platform.proto
deleted file mode 100644
index c9ba3738..00000000
--- a/proto/platform/tenant/v1/vuln.platform.proto
+++ /dev/null
@@ -1,162 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantVulnProto";
-
-package chainguard.platform.tenant;
-
-import "google/api/annotations.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-import "sbom.platform.proto";
-
-service VulnReports {
- rpc List(VulnReportFilter) returns (VulnReportList) {
- option (google.api.http) = {
- get: "/tenant/v1/vulnreports"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_VULN_REPORTS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message VulnReport {
- // id, The VulnReport UIDP at which this VulnReport resides.
- string id = 1;
-
- // vulnerability_db_last_build_time holds the time when the vulnerability database was built last time.
- google.protobuf.Timestamp vulnerability_db_last_build_time = 2;
-
- // Report's list of vulnerability matches(s).
- repeated VulnerabilityMatch vulnerability_matches = 3;
-
- // scanner contains some information about the scanner used to generate the report.
- Scanner scanner = 4;
-
- // report_generation tracks the timestamp at which this report was generated.
- google.protobuf.Timestamp report_generation = 5;
-
- // raw_vuln_report may or may not be useful in the long term, but for now to make
- // progress on this, we'll just yolo and serialize it here.
- bytes raw_vuln_report = 6;
-
- // last_seen tracks the timestamp at which this vuln report was last seen.
- google.protobuf.Timestamp last_seen = 7;
-}
-
-message Scanner {
- // name contains the vendor name of the scanner.
- string name = 1;
- // version holds the version of the used scanner to generate the report.
- string version = 2;
-}
-
-message VulnerabilityMatch {
- // Vulnerability holds information about the found vulnerability.
- VulnerabilityRecord vulnerability = 1;
-
- // Package affected by this vulnerability.
- Package2 pkg = 2;
-
- // Fix related data about this vulnerability.
- optional Fix fix = 3;
-}
-
-message VulnerabilityRecord {
- // id of the vulnerability e.g. CVE_1231-12.
- string id = 1;
-
- // a short description of this vulnerability.
- string description = 2;
-
- // severity is the value representing the severity of the vulnerability
- Severity severity = 3;
-
- enum Severity {
- UNKNOWN = 0;
- LOW = 1;
- MEDIUM = 2;
- HIGH = 3;
- CRITICAL = 4;
- }
-
- // source from where the vulnerability information was obtained, e.g. nvd, github, osv.
- string source = 4;
-
- // List of cvss information about the exploitability of the vulnerability.
- repeated Cvss cvss = 5;
-
- message Cvss {
- // CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
- string score = 1;
- // CVSS version used to populate score and severity.
- string version = 2;
- }
-
- // List of cpe_uri on which the vulnerability was found.
- repeated string cpe_uri = 6;
-
- // URLs related to this vulnerability.
- repeated string related_urls = 7;
-
- // advisories related to this vulnerability.
- map advisories = 8;
-
- message RelatedVulnerability {
- // ID of the vulnerability.
- string id = 1;
- // Source from where the vulnerability information was obtained, e.g. nvd, github, osv.
- string source = 2;
- }
-
- // related vulnerabilities to the main vulnerability reported here.
- repeated RelatedVulnerability related_vulnerabilities = 9;
-
- // display_id is the normalized value of the vulnerability ID often defined by a CVE-ID.
- string display_id = 10;
-}
-
-message Fix {
- // List of in versions of the package on which the vulnerability has been solved.
- repeated string versions = 1;
-
- // state reflects the state of the fix, e.g. fixed, unknown, not-fixed, won't-fix.
- State state = 2;
- enum State {
- UNKNOWN = 0;
- FIXED = 1;
- NOT_FIXED = 2;
- WONT_FIX = 3;
- }
-}
-
-message VulnReportList {
- repeated VulnReport items = 1;
-}
-
-message VulnReportFilter {
- // id is the exact UID of the record.
- string id = 1;
-
- chainguard.platform.common.UIDPFilter uidp = 2;
-
- // This field was retired and is no longer served.
- reserved 3;
-
- // This field was retired and is no longer served.
- reserved 4;
-
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- google.protobuf.Timestamp active_since = 5;
-
- // include_raw_vuln_report is a flag to return a list of reports containing the raw report.
- bool include_raw_vuln_report = 6;
-}
diff --git a/proto/platform/tenant/v1/vuln.platform_grpc.pb.go b/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
deleted file mode 100644
index f11dfa37..00000000
--- a/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: vuln.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- VulnReports_List_FullMethodName = "/chainguard.platform.tenant.VulnReports/List"
-)
-
-// VulnReportsClient is the client API for VulnReports service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type VulnReportsClient interface {
- List(ctx context.Context, in *VulnReportFilter, opts ...grpc.CallOption) (*VulnReportList, error)
-}
-
-type vulnReportsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewVulnReportsClient(cc grpc.ClientConnInterface) VulnReportsClient {
- return &vulnReportsClient{cc}
-}
-
-func (c *vulnReportsClient) List(ctx context.Context, in *VulnReportFilter, opts ...grpc.CallOption) (*VulnReportList, error) {
- out := new(VulnReportList)
- err := c.cc.Invoke(ctx, VulnReports_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// VulnReportsServer is the server API for VulnReports service.
-// All implementations must embed UnimplementedVulnReportsServer
-// for forward compatibility
-type VulnReportsServer interface {
- List(context.Context, *VulnReportFilter) (*VulnReportList, error)
- mustEmbedUnimplementedVulnReportsServer()
-}
-
-// UnimplementedVulnReportsServer must be embedded to have forward compatible implementations.
-type UnimplementedVulnReportsServer struct {
-}
-
-func (UnimplementedVulnReportsServer) List(context.Context, *VulnReportFilter) (*VulnReportList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedVulnReportsServer) mustEmbedUnimplementedVulnReportsServer() {}
-
-// UnsafeVulnReportsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to VulnReportsServer will
-// result in compilation errors.
-type UnsafeVulnReportsServer interface {
- mustEmbedUnimplementedVulnReportsServer()
-}
-
-func RegisterVulnReportsServer(s grpc.ServiceRegistrar, srv VulnReportsServer) {
- s.RegisterService(&VulnReports_ServiceDesc, srv)
-}
-
-func _VulnReports_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(VulnReportFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(VulnReportsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: VulnReports_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(VulnReportsServer).List(ctx, req.(*VulnReportFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// VulnReports_ServiceDesc is the grpc.ServiceDesc for VulnReports service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var VulnReports_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.VulnReports",
- HandlerType: (*VulnReportsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _VulnReports_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "vuln.platform.proto",
-}
diff --git a/proto/platform/test/mock_clients.go b/proto/platform/test/mock_clients.go
deleted file mode 100644
index b6dd728a..00000000
--- a/proto/platform/test/mock_clients.go
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "chainguard.dev/sdk/proto/platform"
- advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
- advisorytest "chainguard.dev/sdk/proto/platform/advisory/v1/test"
- auth "chainguard.dev/sdk/proto/platform/auth/v1"
- authtest "chainguard.dev/sdk/proto/platform/auth/v1/test"
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
- iamtest "chainguard.dev/sdk/proto/platform/iam/v1/test"
- oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
- oidctest "chainguard.dev/sdk/proto/platform/oidc/v1/test"
- ping "chainguard.dev/sdk/proto/platform/ping/v1"
- pingtest "chainguard.dev/sdk/proto/platform/ping/v1/test"
- registry "chainguard.dev/sdk/proto/platform/registry/v1"
- registrytest "chainguard.dev/sdk/proto/platform/registry/v1/test"
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
- tenanttest "chainguard.dev/sdk/proto/platform/tenant/v1/test"
-)
-
-var _ platform.Clients = (*MockPlatformClients)(nil)
-
-type MockPlatformClients struct {
- OnError error
-
- IAMClient iamtest.MockIAMClient
- TenantClient tenanttest.MockTenantClient
- RegistryClient registrytest.MockRegistryClients
- AdvisoryClient advisorytest.MockSecurityAdvisoryClients
- PingClient pingtest.MockPingServiceClients
-}
-
-func (m MockPlatformClients) Close() error {
- return m.OnError
-}
-
-func (m MockPlatformClients) IAM() iam.Clients {
- return m.IAMClient
-}
-
-func (m MockPlatformClients) Tenant() tenant.Clients {
- return m.TenantClient
-}
-
-func (m MockPlatformClients) Registry() registry.Clients {
- return m.RegistryClient
-}
-
-func (m MockPlatformClients) Advisory() advisory.Clients {
- return m.AdvisoryClient
-}
-
-func (m MockPlatformClients) Ping() ping.Clients {
- return m.PingClient
-}
-
-var _ platform.OIDCClients = (*MockOIDCClients)(nil)
-
-type MockOIDCClients struct {
- OnError error
-
- AuthClient authtest.MockAuthClient
- OIDCClient oidctest.MockOIDCClient
- PingClient pingtest.MockPingServiceClients
-}
-
-func (m MockOIDCClients) Close() error {
- return m.OnError
-}
-
-func (m MockOIDCClients) Auth() auth.AuthClient {
- return m.AuthClient
-}
-
-func (m MockOIDCClients) OIDC() oidc.Clients {
- return m.OIDCClient
-}
-
-func (m MockOIDCClients) OIDCPing() ping.Clients {
- return m.PingClient
-}
diff --git a/proto/platform/test/mock_server.go b/proto/platform/test/mock_server.go
deleted file mode 100644
index 7a0471c2..00000000
--- a/proto/platform/test/mock_server.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
- "testing"
-
- delegate "chainguard.dev/go-grpc-kit/pkg/options"
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
- iamtest "chainguard.dev/sdk/proto/platform/iam/v1/test"
- "google.golang.org/grpc"
- "google.golang.org/grpc/test/bufconn"
-)
-
-type MockPlatformServer struct {
- GroupServer iamtest.MockGroupsServer
-}
-
-// StartPlatformServer starts the mock server and returns the connection string.
-func (m *MockPlatformServer) StartPlatformServer(_ context.Context, t *testing.T) string {
- t.Helper()
- lis := bufconn.Listen(1024 * 1024)
- testScheme := delegate.RegisterListenerForTest(lis)
- t.Cleanup(func() {
- delegate.UnregisterTestListener(testScheme)
- })
- s := grpc.NewServer()
- iam.RegisterGroupsServer(s, m.GroupServer)
- go func() {
- t.Helper()
- if err := s.Serve(lis); err != nil {
- panic(fmt.Sprintf("Server exited with error: %v", err))
- }
- }()
- t.Cleanup(func() {
- s.GracefulStop()
- })
-
- return fmt.Sprintf("%s://%s", testScheme, lis.Addr().String())
-}
diff --git a/sts/sts.go b/sts/sts.go
deleted file mode 100644
index b18619fd..00000000
--- a/sts/sts.go
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package sts
-
-import (
- "bytes"
- "context"
- "crypto/tls"
- "fmt"
- "io"
- "net/http"
- "net/url"
-
- oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
- "golang.org/x/oauth2"
- "google.golang.org/grpc/metadata"
- "google.golang.org/protobuf/encoding/protojson"
- "google.golang.org/protobuf/proto"
-)
-
-const GulfstreamAudience = "gulfstream"
-
-// Exchanger is an interface for exchanging a third-party token for a Chainguard
-// token.
-type Exchanger interface {
- // Exchange performs the actual token exchange, sending "token" to the
- // Chainguard issuer's STS interface, and receiving bytes or an error.
- Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error)
-
- // Refresh exchanges a refresh token for a new access token and refresh token.
- Refresh(ctx context.Context, token string, opts ...ExchangerOption) (accessToken string, refreshToken string, err error)
-}
-
-// New creates a new Exchanger that works against the provided issuer's STS
-// endpoint, and requests token with the specified audience. It's behavior
-// can be further customized via optional ExchangerOption parameters.
-func New(issuer, audience string, opts ...ExchangerOption) Exchanger {
- i := &impl{
- opts: options{
- issuer: issuer,
- audience: audience,
- },
- }
- for _, opt := range opts {
- opt(&i.opts)
- }
-
- return i
-}
-
-// Exchange performs an OIDC token exchange with the correct Exchanger based on the provided options.
-func Exchange(ctx context.Context, issuer, audience, idToken string, exchangerOptions ...ExchangerOption) (string, error) {
- opts := options{
- issuer: issuer,
- audience: audience,
- }
- for _, eo := range exchangerOptions {
- eo(&opts)
- }
-
- var e Exchanger
- if opts.http1Downgrade {
- e = &HTTP1DowngradeExchanger{opts: opts}
- } else {
- e = &impl{opts: opts}
- }
- return e.Exchange(ctx, idToken, exchangerOptions...)
-}
-
-type impl struct {
- opts options
-}
-
-type options struct {
- issuer string
- audience string
- cluster string
- userAgent string
- scope string
- capabilities []string
- identity string
- includeUpstreamToken bool
- http1Downgrade bool
-}
-
-var _ Exchanger = (*impl)(nil)
-
-// Stubbed when testing
-var oidcNewClients = oidc.NewClients
-
-// Exchange implements Exchanger
-func (i *impl) Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error) {
- o := i.opts
- for _, opt := range opts {
- opt(&o)
- }
-
- c, err := oidcNewClients(ctx, o.issuer, fmt.Sprintf("Bearer %s", token), oidc.WithUserAgent(o.userAgent))
- if err != nil {
- return "", err
- }
- defer c.Close()
-
- resp, err := c.STS().Exchange(ctx, &oidc.ExchangeRequest{
- Aud: []string{o.audience},
- Scope: o.scope,
- Cluster: o.cluster,
- Identity: o.identity,
- IncludeUpstreamToken: o.includeUpstreamToken,
- Cap: o.capabilities,
- })
- if err != nil {
- return "", err
- }
- return resp.Token, nil
-}
-
-// Refresh implements Exchanger
-func (i *impl) Refresh(ctx context.Context, token string, opts ...ExchangerOption) (string, string, error) {
- o := i.opts
- for _, opt := range opts {
- opt(&o)
- }
-
- c, err := oidcNewClients(ctx, o.issuer, fmt.Sprintf("Bearer %s", token), oidc.WithUserAgent(o.userAgent))
- if err != nil {
- return "", "", err
- }
- defer c.Close()
-
- resp, err := c.STS().ExchangeRefreshToken(ctx, &oidc.ExchangeRefreshTokenRequest{
- Aud: []string{o.audience},
- Scope: o.scope,
- Cap: o.capabilities,
- })
- if err != nil {
- return "", "", err
- }
- return resp.GetToken().GetToken(), resp.GetRefreshToken().GetToken(), err
-}
-
-// ExchangerOption is a way of customizing the behavior of the Exchanger
-// constructed via New()
-type ExchangerOption func(*options)
-
-// WithUserAgent sets the user agent sent by the Exchanger.
-func WithUserAgent(agent string) ExchangerOption {
- return func(i *options) {
- i.userAgent = agent
- }
-}
-
-// WithCluster sets the cluster parameter sent by the Exchanger.
-//
-// Only one of cluster or scope may be set.
-func WithCluster(cluster string) ExchangerOption {
- return func(i *options) {
- i.cluster = cluster
- }
-}
-
-// WithScope sets the scope parameter sent by the Exchanger.
-//
-// Only one of cluster or scope may be set.
-func WithScope(scope string) ExchangerOption {
- return func(i *options) {
- i.scope = scope
- }
-}
-
-// WithCapabilities sets the capabilities sent by the Exchanger.
-func WithCapabilities(cap ...string) ExchangerOption {
- return func(i *options) {
- i.capabilities = cap
- }
-}
-
-// WithIdentity sets the the unique ID of the identity so that STS exchange can
-// look up pre-stored verification keys without ambiguity
-func WithIdentity(uid string) ExchangerOption {
- return func(i *options) {
- i.identity = uid
- }
-}
-
-// WithIncludeUpstreamToken requests that the upstream token be included in the returned
-// STS token.
-func WithIncludeUpstreamToken() ExchangerOption {
- return func(i *options) {
- i.includeUpstreamToken = true
- }
-}
-
-// WithHTTP1Downgrade signals Exchange to use HTTP1DowngradeExchanger in the STS exchange.
-func WithHTTP1Downgrade() ExchangerOption {
- return func(i *options) {
- i.http1Downgrade = true
- }
-}
-
-type HTTP1DowngradeExchanger struct {
- opts options
-}
-
-func NewHTTP1DowngradeExchanger(issuer, audience string, opts ...ExchangerOption) *HTTP1DowngradeExchanger {
- i := &HTTP1DowngradeExchanger{
- opts: options{
- issuer: issuer,
- audience: audience,
- },
- }
- for _, opt := range opts {
- opt(&i.opts)
- }
- return i
-}
-
-func (i *HTTP1DowngradeExchanger) doHTTP1(ctx context.Context,
- auth string,
- path string, in proto.Message, out proto.Message, opts options) error {
- body, err := protojson.Marshal(in)
- if err != nil {
- return err
- }
- u, err := url.JoinPath(i.opts.issuer, path)
- if err != nil {
- return err
- }
- req, err := http.NewRequestWithContext(ctx, http.MethodPost, u, bytes.NewReader(body))
- if err != nil {
- return err
- }
- req.Header.Set("Content-Type", "application/json")
- if opts.userAgent != "" {
- req.Header.Set("User-Agent", opts.userAgent)
- }
-
- if md, ok := metadata.FromOutgoingContext(ctx); ok {
- for k, v := range md {
- for _, vv := range v {
- req.Header.Add(k, vv)
- }
- }
- }
-
- // Explicitly disable HTTP/2 support by setting the
- // client Transport's TLSNextProto to an empty map.
- // ref: https://pkg.go.dev/net/http#hdr-HTTP_2
- client := &http.Client{
- Transport: &oauth2.Transport{
- Base: &http.Transport{
- TLSNextProto: map[string]func(string, *tls.Conn) http.RoundTripper{},
- },
- Source: oauth2.StaticTokenSource(&oauth2.Token{AccessToken: auth}),
- },
- }
- resp, err := client.Do(req)
- if err != nil {
- return err
- }
- if resp.StatusCode != http.StatusOK {
- return fmt.Errorf("%s", resp.Status)
- }
-
- b, err := io.ReadAll(resp.Body)
- if err != nil {
- return err
- }
- defer resp.Body.Close()
- return protojson.Unmarshal(b, out)
-}
-
-func (i *HTTP1DowngradeExchanger) Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error) {
- o := i.opts
- for _, opt := range opts {
- opt(&o)
- }
- in := &oidc.ExchangeRequest{
- Aud: []string{o.audience},
- Scope: o.scope,
- Cluster: o.cluster,
- Identity: o.identity,
- IncludeUpstreamToken: o.includeUpstreamToken,
- Cap: o.capabilities,
- }
- out := new(oidc.RawToken)
- if err := i.doHTTP1(ctx, token, "/sts/exchange", in, out, o); err != nil {
- return "", err
- }
- return out.Token, nil
-}
-
-func (i *HTTP1DowngradeExchanger) Refresh(ctx context.Context, token string, opts ...ExchangerOption) (string, string, error) {
- o := i.opts
- for _, opt := range opts {
- opt(&o)
- }
-
- in := &oidc.ExchangeRefreshTokenRequest{
- Aud: []string{o.audience},
- Scope: o.scope,
- Cap: o.capabilities,
- }
-
- out := new(oidc.TokenPair)
- if err := i.doHTTP1(ctx, token, "sts/access_token", in, out, o); err != nil {
- return "", "", err
- }
-
- return out.GetToken().Token, out.GetRefreshToken().Token, nil
-}
diff --git a/sts/sts_test.go b/sts/sts_test.go
deleted file mode 100644
index d2c81592..00000000
--- a/sts/sts_test.go
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package sts
-
-import (
- "context"
- "errors"
- "testing"
-
- oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
- "chainguard.dev/sdk/proto/platform/oidc/v1/test"
- "github.com/google/go-cmp/cmp"
-)
-
-func TestRefresh(t *testing.T) {
- tests := map[string]struct {
- issuer string
- audience string
- newOpts []ExchangerOption
- exchangeOpts []ExchangerOption
- wantToken string
- wantRefreshToken string
- wantErr bool
- clientMock test.MockOIDCClient
- }{
- "zero options": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnGetAccessToken: []test.STSOnGetAccessToken{{
- Given: &oidc.ExchangeRefreshTokenRequest{
- Aud: []string{"baz"},
- },
- Exchanged: &oidc.TokenPair{
- Token: &oidc.RawToken{Token: "token!"},
- RefreshToken: &oidc.RawToken{Token: "refresh token!"},
- },
- }},
- },
- },
- wantToken: "token!",
- wantRefreshToken: "refresh token!",
- },
- "basic error plumbing": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnGetAccessToken: []test.STSOnGetAccessToken{{
- Given: &oidc.ExchangeRefreshTokenRequest{
- Aud: []string{"baz"},
- },
- Error: errors.New("unexpected EOF"),
- }},
- },
- },
- wantErr: true,
- },
- "capabilities and scope": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCapabilities("registry.push"),
- WithScope("derp"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnGetAccessToken: []test.STSOnGetAccessToken{{
- Given: &oidc.ExchangeRefreshTokenRequest{
- Aud: []string{"baz"},
- Cap: []string{"registry.push"},
- Scope: "derp",
- },
- Exchanged: &oidc.TokenPair{
- Token: &oidc.RawToken{Token: "token!"},
- RefreshToken: &oidc.RawToken{Token: "refresh token"},
- },
- }},
- },
- },
- wantToken: "token!",
- wantRefreshToken: "refresh token",
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
- return test.clientMock, nil
- }
-
- exch := New(test.issuer, test.audience, test.newOpts...)
- token, refreshToken, gotErr := exch.Refresh(context.Background(), "foo", test.exchangeOpts...)
- if gotErr != nil && !test.wantErr {
- t.Error("got err: ", gotErr, "and expected no error")
- }
- if diff := cmp.Diff(token, test.wantToken); diff != "" {
- t.Error("Got unexpected diff in token: ", diff)
- }
- if diff := cmp.Diff(refreshToken, test.wantRefreshToken); diff != "" {
- t.Error("Got unexpected diff in refresh token: ", diff)
- }
- })
- }
-}
-func TestImplExchange(t *testing.T) {
- tests := map[string]struct {
- issuer string
- audience string
- newOpts []ExchangerOption
- exchangeOpts []ExchangerOption
- want string
- wantErr bool
- clientMock test.MockOIDCClient
- }{
- "zero options": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "basic error plumbing": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- },
- Error: errors.New("unexpected EOF"),
- }},
- },
- },
- wantErr: true,
- },
- "capabilities and scope on create": {
- issuer: "bar",
- audience: "baz",
- newOpts: []ExchangerOption{
- WithCapabilities("registry.push"),
- WithScope("derp"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cap: []string{"registry.push"},
- Scope: "derp",
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "capabilities and scope on exchange": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCapabilities("registry.push"),
- WithScope("derp"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cap: []string{"registry.push"},
- Scope: "derp",
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "identity": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithIdentity("my-identity"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Identity: "my-identity",
- },
- Exchanged: &oidc.RawToken{Token: "token foo"},
- }},
- },
- },
- want: "token foo",
- },
- "include upstream": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithIncludeUpstreamToken(),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- IncludeUpstreamToken: true,
- },
- Exchanged: &oidc.RawToken{Token: "tokenz"},
- }},
- },
- },
- want: "tokenz",
- },
- "cluster": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCluster("kind i presume"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cluster: "kind i presume",
- },
- Exchanged: &oidc.RawToken{Token: "tokenz"},
- }},
- },
- },
- want: "tokenz",
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
- return test.clientMock, nil
- }
-
- exch := New(test.issuer, test.audience, test.newOpts...)
- gotToken, gotErr := exch.Exchange(context.Background(), "foo", test.exchangeOpts...)
- if gotErr != nil && !test.wantErr {
- t.Error("got err: ", gotErr, "and expected no error")
- }
- if diff := cmp.Diff(gotToken, test.want); diff != "" {
- t.Error("Got unexpected diff in token: ", diff)
- }
- })
- }
-}
-
-func TestExchange(t *testing.T) {
- tests := map[string]struct {
- issuer string
- audience string
- exchangeOpts []ExchangerOption
- want string
- wantErr bool
- clientMock test.MockOIDCClient
- }{
- "zero options": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "basic error plumbing": {
- issuer: "bar",
- audience: "baz",
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- },
- Error: errors.New("unexpected EOF"),
- }},
- },
- },
- wantErr: true,
- },
- "capabilities and scope on create": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCapabilities("registry.push"),
- WithScope("derp"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cap: []string{"registry.push"},
- Scope: "derp",
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "capabilities and scope on exchange": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCapabilities("registry.push"),
- WithScope("derp"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cap: []string{"registry.push"},
- Scope: "derp",
- },
- Exchanged: &oidc.RawToken{Token: "token!"},
- }},
- },
- },
- want: "token!",
- },
- "identity": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithIdentity("my-identity"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Identity: "my-identity",
- },
- Exchanged: &oidc.RawToken{Token: "token foo"},
- }},
- },
- },
- want: "token foo",
- },
- "include upstream": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithIncludeUpstreamToken(),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- IncludeUpstreamToken: true,
- },
- Exchanged: &oidc.RawToken{Token: "tokenz"},
- }},
- },
- },
- want: "tokenz",
- },
- "cluster": {
- issuer: "bar",
- audience: "baz",
- exchangeOpts: []ExchangerOption{
- WithCluster("kind i presume"),
- },
- clientMock: test.MockOIDCClient{
- STSClient: test.MockSTSClient{
- OnExchange: []test.STSOnExchange{{
- Given: &oidc.ExchangeRequest{
- Aud: []string{"baz"},
- Cluster: "kind i presume",
- },
- Exchanged: &oidc.RawToken{Token: "tokenz"},
- }},
- },
- },
- want: "tokenz",
- },
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
- return test.clientMock, nil
- }
-
- gotToken, gotErr := Exchange(context.Background(), test.issuer, test.audience, "foo", test.exchangeOpts...)
- if gotErr != nil && !test.wantErr {
- t.Error("got err: ", gotErr, "and expected no error")
- }
- if diff := cmp.Diff(gotToken, test.want); diff != "" {
- t.Error("Got unexpected diff in token: ", diff)
- }
- })
- }
-}
diff --git a/sts/tokensource.go b/sts/tokensource.go
deleted file mode 100644
index 0f79b6a7..00000000
--- a/sts/tokensource.go
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package sts
-
-import (
- "context"
- "fmt"
- "time"
-
- "golang.org/x/oauth2"
-)
-
-// NewTokenSource creates an oauth2.TokenSource by wrapping another TokenSource
-// in a Chainguard STS exchange brokered by the provided Exchanger.
-func NewTokenSource(ts oauth2.TokenSource, xchg Exchanger) oauth2.TokenSource {
- return &stsTokenSource{
- ts: ts,
- xchg: xchg,
- }
-}
-
-type stsTokenSource struct {
- ts oauth2.TokenSource
- xchg Exchanger
-}
-
-// Token implements oauth2.TokenSource
-func (sts *stsTokenSource) Token() (*oauth2.Token, error) {
- tok, err := sts.ts.Token()
- if err != nil {
- return nil, fmt.Errorf("fetching base token: %w", err)
- }
- idt, err := sts.xchg.Exchange(context.Background(), tok.AccessToken)
- if err != nil {
- return nil, fmt.Errorf("exchanging base token: %w", err)
- }
- return &oauth2.Token{
- AccessToken: idt,
- Expiry: time.Now().Add(time.Hour),
- }, nil
-}
diff --git a/uidp/ancestry.go b/uidp/ancestry.go
deleted file mode 100644
index 11f106aa..00000000
--- a/uidp/ancestry.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package uidp
-
-import (
- "path"
- "regexp"
- "strings"
-)
-
-// IsAncestor checks whether the "parent" UIDP is an ancestor (non-inclusive)
-// of the given "child" UIDP.
-func IsAncestor(parent, child string) bool {
- return strings.HasPrefix(child, parent+"/")
-}
-
-// InRoot checks whether the UIDP is in the root, as opposed to within a group
-func InRoot(child string) bool {
- return !strings.Contains(child, "/")
-}
-
-// IsAncestorOrSelf checks whether the "parent" UIDP is an ancestor (inclusive)
-// of the given "child" UIDP.
-func IsAncestorOrSelf(parent, child string) bool {
- return child == parent || IsAncestor(parent, child)
-}
-
-// Parent returns the "parent" UIDP for a child UIDP. Returns / if parent is root.
-//
-// Example:
-//
-// Parent("a/b/c") returns "a/b"
-// Parent("a") returns "/"
-func Parent(child string) string {
- // path.Dir returns "." if the child is already at the root
- if p := path.Dir(child); p != "." {
- return p
- }
- return "/"
-}
-
-// Parents returns all "parent" UIDP for a child UIDP. Returns empty slice if parent is root.
-//
-// Example:
-//
-// Parents("a/b/c/d") returns ["a/b/c", "a/b", "a"]
-func Parents(child string) []string {
- parents := make([]string, 0, strings.Count(child, "/"))
- for p := Parent(child); p != "/"; p = Parent(p) {
- parents = append(parents, p)
- }
- return parents
-}
-
-// Ancestry returns all parent UIDPs and the child. Returns only the child if it is root.
-//
-// Example:
-//
-// Ancestry("a/b/c/d") returns ["a/b/c/d", "a/b/c", "a/b", "a"]
-func Ancestry(child string) []string {
- ancestry := make([]string, 0, strings.Count(child, "/")+1)
- ancestry = append(ancestry, child)
- for p := Parent(child); p != "/"; p = Parent(p) {
- ancestry = append(ancestry, p)
- }
- return ancestry
-}
-
-// Valid returns true for valid UIDP values.
-// The base segment of a UIDP is 20 hex-encoded bytes (40 characters). This may
-// be followed by zero or more parts with 8 hex-encoded bytes (16 characters).
-var Valid = regexp.MustCompile(`^[0-9a-f]{40}(?:/[0-9a-f]{16})*$`).MatchString
diff --git a/uidp/ancestry_test.go b/uidp/ancestry_test.go
deleted file mode 100644
index 5c2eb69d..00000000
--- a/uidp/ancestry_test.go
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package uidp
-
-import (
- "reflect"
- "testing"
-)
-
-func TestAncestorExclusive(t *testing.T) {
- tests := []struct {
- name string
- parent string
- child string
- want bool
- }{{
- name: "direct parent",
- parent: "a/b",
- child: "a/b/c",
- want: true,
- }, {
- name: "grand parent",
- parent: "a",
- child: "a/b/c",
- want: true,
- }, {
- name: "self",
- parent: "a/b/c",
- child: "a/b/c",
- want: false, // This should be the main difference from below
- }, {
- name: "child",
- parent: "a/b/c/d",
- child: "a/b/c",
- want: false,
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- got := IsAncestor(test.parent, test.child)
- if got != test.want {
- t.Errorf("IsAncestor(%q, %q) = %v, wanted %v", test.parent, test.child, got, test.want)
- }
- })
- }
-}
-
-func TestAncestorInclusive(t *testing.T) {
- tests := []struct {
- name string
- parent string
- child string
- want bool
- }{{
- name: "direct parent",
- parent: "a/b",
- child: "a/b/c",
- want: true,
- }, {
- name: "grand parent",
- parent: "a",
- child: "a/b/c",
- want: true,
- }, {
- name: "self",
- parent: "a/b/c",
- child: "a/b/c",
- want: true, // This should be the main difference from above
- }, {
- name: "child",
- parent: "a/b/c/d",
- child: "a/b/c",
- want: false,
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- got := IsAncestorOrSelf(test.parent, test.child)
- if got != test.want {
- t.Errorf("IsAncestor(%q, %q) = %v, wanted %v", test.parent, test.child, got, test.want)
- }
- })
- }
-}
-
-func TestInRoot(t *testing.T) {
- tests := []struct {
- id string
- want bool
- }{
- {"x", true},
- {"xyz", true},
- {"x/y", false},
- {"x/y/z", false},
- }
-
- for _, test := range tests {
- t.Run(test.id, func(t *testing.T) {
- got := InRoot(test.id)
- if got != test.want {
- t.Errorf("InRoot(%q) = %v, wanted %v", test.id, got, test.want)
- }
- })
- }
-}
-
-func TestParent(t *testing.T) {
- tests := []struct {
- id string
- want string
- }{
- {"x", "/"},
- {"xyz", "/"},
- {"x/y", "x"},
- {"x/y/z", "x/y"},
- }
-
- for _, test := range tests {
- t.Run(test.id, func(t *testing.T) {
- got := Parent(test.id)
- if got != test.want {
- t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
- }
- })
- }
-}
-
-func TestParents(t *testing.T) {
- tests := []struct {
- id string
- want []string
- }{
- {"x", []string{}},
- {"xyz", []string{}},
- {"x/y", []string{"x"}},
- {"x/y/z", []string{"x/y", "x"}},
- {"", []string{}},
- {"/", []string{}},
- {"//", []string{}},
- }
-
- for _, test := range tests {
- t.Run(test.id, func(t *testing.T) {
- got := Parents(test.id)
- if !reflect.DeepEqual(got, test.want) {
- t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
- }
- })
- }
-}
-
-func TestAncestry(t *testing.T) {
- tests := []struct {
- id string
- want []string
- }{
- {"x", []string{"x"}},
- {"xyz", []string{"xyz"}},
- {"x/y", []string{"x/y", "x"}},
- {"x/y/z", []string{"x/y/z", "x/y", "x"}},
- {"", []string{""}},
- {"/", []string{"/"}},
- {"//", []string{"//"}},
- }
-
- for _, test := range tests {
- t.Run(test.id, func(t *testing.T) {
- got := Ancestry(test.id)
- if !reflect.DeepEqual(got, test.want) {
- t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
- }
- })
- }
-}
diff --git a/uidp/doc.go b/uidp/doc.go
deleted file mode 100644
index 97dc9fe8..00000000
--- a/uidp/doc.go
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-// Package uidp contains utilities for reasoning about and manipulating the
-// Chainguard IAM "UIDP" (UID Path) concept.
-package uidp
diff --git a/uidp/uid.go b/uidp/uid.go
deleted file mode 100644
index 302034f5..00000000
--- a/uidp/uid.go
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright 2021 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package uidp
-
-import (
- "crypto/rand"
- "encoding/hex"
- "fmt"
-)
-
-// NOTE: We are using UID over UUID for 2 reasons:
-// 1. UUIDs are very large.
-// 2. UUIDs are not very random.
-// Ref: https://neilmadden.blog/2018/08/30/moving-away-from-uuids/
-
-// UID will is used for the primary key for items that must be globally unique.
-// - A UID is 20 bytes of random bytes, URL safe hex encoded.
-type UID string
-
-// SUID is be used to form the primary key for items that must be unique within some scoping (non-global).
-// - A SUID is 8 random bytes, URL safe hex encoded.
-type SUID string
-
-// UIDP is be used to denote the fully-qualified path for scoped keys.
-// - A UIDP will consist of '/' delimited SUID segments with a UID root, following POSIX directory semantics.
-// - The "basename" SUID is our key within the scoping of the "dirname" UIDP.
-type UIDP string
-
-func NewUID() UID {
- token := make([]byte, 20)
- _, _ = rand.Read(token)
- return UID(hex.EncodeToString(token))
-}
-
-func NewSUID() SUID {
- token := make([]byte, 8)
- _, _ = rand.Read(token)
- return SUID(hex.EncodeToString(token))
-}
-
-func NewUIDP(path UIDP) UIDP {
- if len(path) == 0 {
- return UIDP(NewUID())
- }
- return UIDP(fmt.Sprintf("%s/%s", path, NewSUID()))
-}
-
-func (u UIDP) NewChild() UIDP {
- return NewUIDP(u)
-}
-
-func (u UID) String() string {
- return string(u)
-}
-
-func (u SUID) String() string {
- return string(u)
-}
-
-func (u UIDP) String() string {
- return string(u)
-}
diff --git a/uidp/uid_test.go b/uidp/uid_test.go
deleted file mode 100644
index e7f9e540..00000000
--- a/uidp/uid_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package uidp
-
-import "testing"
-
-func TestUIDPValidity(t *testing.T) {
- var uidp UIDP
-
- for i := 0; i < 5; i++ {
- uidp = uidp.NewChild()
-
- if !Valid(string(uidp)) {
- t.Errorf("Invalid UIDP: %s", uidp)
- }
- }
-}
diff --git a/validation/aws_account.go b/validation/aws_account.go
deleted file mode 100644
index 3a378cb6..00000000
--- a/validation/aws_account.go
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "fmt"
- "regexp"
-)
-
-const awsAccountPattern = `^[0-9]{12}$`
-
-var (
- awsAccountPatternCompiled = regexp.MustCompile(awsAccountPattern)
-
- // ErrInvalidAWSAccount describes invalid AWS Account IDs by sharing the
- // regular expression they must match
- ErrInvalidAWSAccount = fmt.Errorf("AWS account ID must match %q", awsAccountPattern)
-)
-
-// ValidateAWSAccount checks an AWS account id is valid. AWS Accounts must be a
-// 12 digit number.
-func ValidateAWSAccount(id string) error {
- if awsAccountPatternCompiled.MatchString(id) {
- return nil
- }
- return ErrInvalidAWSAccount
-}
diff --git a/validation/aws_account_test.go b/validation/aws_account_test.go
deleted file mode 100644
index 19fba577..00000000
--- a/validation/aws_account_test.go
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "testing"
-)
-
-func TestValidateAWSAccount(t *testing.T) {
- tests := map[string]struct {
- Input string
- Expect bool
- }{
- "valid": {"123456789012", true},
- "empty": {"", false},
- "letters": {"12345678901a", false},
- "too short": {"123", false},
- "too long": {"1234567890123", false},
- }
-
- for name, tt := range tests {
- t.Run(name, func(t *testing.T) {
- got := ValidateAWSAccount(tt.Input)
- if (got == nil) != tt.Expect {
- t.Errorf("Expected GroupName(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
- }
- })
- }
-}
diff --git a/validation/bundles.go b/validation/bundles.go
deleted file mode 100644
index d9f3282f..00000000
--- a/validation/bundles.go
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "fmt"
- "regexp"
-)
-
-const bundlePattern = `^[a-z]+(:[a-z]+)?$`
-
-var (
- bundlePatternCompiled = regexp.MustCompile(bundlePattern)
-
- // ErrInvalidBundles describes invalid bundle(s) by sharing the regular expression
- // they must match
- ErrInvalidBundles = fmt.Errorf("each bundle item must match %q", bundlePattern)
-)
-
-func ValidateBundles(bundles []string) error {
- for _, bundle := range bundles {
- if !bundlePatternCompiled.MatchString(bundle) {
- return ErrInvalidBundles
- }
- }
- return nil
-}
diff --git a/validation/bundles_test.go b/validation/bundles_test.go
deleted file mode 100644
index 19e35be7..00000000
--- a/validation/bundles_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "testing"
-)
-
-func TestValidateBundles(t *testing.T) {
- tests := map[string]struct {
- Input []string
- Expect bool
- }{
- "valid": {[]string{"boo"}, true},
- "valid colon": {[]string{"bundle:boo", "tag:something"}, true},
- "start with colon": {[]string{":boo"}, false},
- "end with colon": {[]string{"boo:"}, false},
- "multiple colons": {[]string{"boo:haha:ra"}, false},
- "empty": {[]string{""}, false},
- "no slashes": {[]string{"foo/bar"}, false},
- "spaces are not alright": {[]string{"chainguard engineering"}, false},
- "other whitespace is bad": {[]string{"\r\n\tderp"}, false},
- "no uppercase": {[]string{"DERP"}, false},
- }
-
- for name, tt := range tests {
- t.Run(name, func(t *testing.T) {
- got := ValidateBundles(tt.Input)
- if (got == nil) != tt.Expect {
- t.Errorf("Expected Bundles(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
- }
- })
- }
-}
diff --git a/validation/name.go b/validation/name.go
deleted file mode 100644
index 545ff8d5..00000000
--- a/validation/name.go
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "fmt"
- "regexp"
-)
-
-const namePattern = `^[a-z0-9 ._-]{1,}$`
-
-var (
- namePatternCompiled = regexp.MustCompile(namePattern)
-
- // ErrInvalidName describes invalid names by sharing the regular expression
- // they must match
- ErrInvalidName = fmt.Errorf("name must match %q", namePattern)
-)
-
-func ValidateName(name string) error {
- if namePatternCompiled.MatchString(name) {
- return nil
- }
- return ErrInvalidName
-}
diff --git a/validation/name_test.go b/validation/name_test.go
deleted file mode 100644
index 05a52f8b..00000000
--- a/validation/name_test.go
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "testing"
-)
-
-func TestValidateName(t *testing.T) {
- tests := map[string]struct {
- Input string
- Expect bool
- }{
- "valid": {"boo.foo_-", true},
- "empty": {"", false},
- "no slashes": {"foo/bar", false},
- "spaces are alright": {"chainguard engineering", true},
- "no spaces are alright too": {"chainguarddemo", true},
- "other whitespace is bad": {"\r\n\tderp", false},
- "no uppercase": {"DERP", false},
- }
-
- for name, tt := range tests {
- t.Run(name, func(t *testing.T) {
- got := ValidateName(tt.Input)
- if (got == nil) != tt.Expect {
- t.Errorf("Expected GroupName(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
- }
- })
- }
-}
diff --git a/validation/readme.go b/validation/readme.go
deleted file mode 100644
index a3a6e609..00000000
--- a/validation/readme.go
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright 2024 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "fmt"
- "html"
- "regexp"
- "strings"
-
- "github.com/google/go-cmp/cmp"
- "github.com/microcosm-cc/bluemonday"
- "github.com/russross/blackfriday/v2"
-)
-
-var ErrUnsafeReadme = fmt.Errorf("readme contained unsafe html content")
-
-// ValidateReadme validates the contents of a Markdown README.md file.
-// If the contents are invalid, a string will be returned containing the
-// diff of what the Markdown would look like as HTML if properly sanitized.
-func ValidateReadme(readme string) (string, error) {
- // Treat empty readme as valid, prevent further processing
- if readme == "" {
- return "", nil
- }
- unsafe := readmeToHTML(readme)
- safe := sanitizeHTML(unsafe)
- // After converting the Markdown to HTML,
- // make sure there is no diff after sanitizing it.
- // Unescape any encoded HTML tags for proper comparison.
- if diff := cmp.Diff(unescapeHTML(unsafe), unescapeHTML(safe)); diff != "" {
- return diff, ErrUnsafeReadme
- }
- return "", nil
-}
-
-func readmeToHTML(rawMarkdown string) string {
- s := string(blackfriday.Run([]byte(rawMarkdown)))
- // Fix issue where single tags get extra space on conversion (e.g. "
")
- s = strings.ReplaceAll(s, " />", "/>")
- return s
-}
-
-var bluemondayPolicy = func() *bluemonday.Policy {
- p := bluemonday.UGCPolicy()
- // Allow fenced code block classes
- p = p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code")
- // Allow links without ref="nofollow" which are not set automatically on links on markdown conversion
- p = p.RequireNoFollowOnLinks(false)
- // Allow custom height and width on images
- p = p.AllowAttrs("width", "height").OnElements("img")
- // Allow HTML comments
- p.AllowComments()
- return p
-}()
-
-func sanitizeHTML(unsafeHTML string) string {
- return bluemondayPolicy.Sanitize(unsafeHTML)
-}
-
-func unescapeHTML(safeHTML string) string {
- return html.UnescapeString(safeHTML)
-}
diff --git a/validation/readme_test.go b/validation/readme_test.go
deleted file mode 100644
index 2d860247..00000000
--- a/validation/readme_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2024 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "testing"
-)
-
-const (
- safeReadme = `
-
-# safe
-
-
-
-[click here](./other.md)
-
-
----
-
-Here is some dangerous code inside a code block:
-
-
-` + "```go" + `
-Hello World
-` + "```"
-
- unsafeReadme1 = `
-
-# unsafe
-
-
-
-[click here](./other.md)
-
-
----
-
-Here is some dangerous code outside a code block:
-
-Hello World
-`
-
- unsafeReadme2 = `
-# unsafe
-
-TAKE THAT!!!!!!!
-
-
-`
-)
-
-func TestValidateReadme(t *testing.T) {
- tests := map[string]struct {
- Input string
- Expect bool
- }{
- "empty": {"", true},
- "safe": {safeReadme, true},
- "unsafe 1": {unsafeReadme1, false},
- "unsafe 2": {unsafeReadme2, false},
- }
-
- for name, tt := range tests {
- t.Run(name, func(t *testing.T) {
- diff, got := ValidateReadme(tt.Input)
- if (got == nil) != tt.Expect {
- t.Errorf("Expected ValidateReadme(`%s`) to return (err == nil) == %v, but got %v. diff: %s", tt.Input, tt.Expect, got, diff)
- }
- })
- }
-}
diff --git a/validation/tag.go b/validation/tag.go
deleted file mode 100644
index 79c29594..00000000
--- a/validation/tag.go
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "fmt"
- "regexp"
-)
-
-// From https://github.com/opencontainers/distribution-spec/blob/main/spec.md#pulling-manifests
-const tagPattern = `^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127}$`
-
-var (
- tagPatternCompiled = regexp.MustCompile(tagPattern)
-
- // ErrInvalidTag describes invalid tags by sharing the regular expression
- // they must match
- ErrInvalidTag = fmt.Errorf("tag must match %q", tagPattern)
-)
-
-func ValidateTag(tag string) error {
- if tagPatternCompiled.MatchString(tag) {
- return nil
- }
- return ErrInvalidTag
-}
diff --git a/validation/tag_test.go b/validation/tag_test.go
deleted file mode 100644
index 00b8d243..00000000
--- a/validation/tag_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "testing"
-)
-
-func TestValidateTag(t *testing.T) {
- tests := map[string]struct {
- Input string
- Expect bool
- }{
- "valid": {"latest", true},
- "version": {"1.2.3-r1", true},
- "uppercase is ok": {"DERP", true},
- "128 chars is ok": {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", true},
- "129 chars is not ok": {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", false},
- "empty": {"", false},
- "no slashes": {"foo/bar", false},
- "no colons": {"foo:bar", false},
- "no spaces in middle": {"chainguard engineering", false},
- "no leading spaces": {" chainguardengineering", false},
- "no spaces both sides": {" chainguardengineering ", false},
- "no trailing spacess": {"chainguardengineering ", false},
- "other whitespace is bad": {"\r\n\tderp", false},
- }
-
- for name, tt := range tests {
- t.Run(name, func(t *testing.T) {
- got := ValidateTag(tt.Input)
- if (got == nil) != tt.Expect {
- t.Errorf("Expected ValidateTag(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
- }
- })
- }
-}
From 4f56141b0de60be7fc847d68b5d8c9680f1b2535 Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Wed, 28 Feb 2024 17:03:00 -0800
Subject: [PATCH 02/41] Export 69c8cc7ed4f53d2f2ef66ef9a73dceebee1b8593
Export: 69c8cc7ed4f53d2f2ef66ef9a73dceebee1b8593
---
.chainguard/source.yaml | 15 +
.gitignore | 29 +
.golangci.yml | 35 +
CODEOWNERS | 1 -
LICENSE | 201 +
README.md | 52 +-
auth/aws/e2e_test.go | 160 +
auth/aws/generate.go | 62 +
auth/aws/verify.go | 119 +
auth/aws/verify_options.go | 83 +
auth/context.go | 47 +
auth/file.go | 62 +
auth/login/html.go | 71 +
auth/login/login.go | 80 +
auth/login/options.go | 181 +
auth/login/options_test.go | 114 +
auth/login/orgcheck.go | 43 +
auth/login/orgcheck_test.go | 75 +
auth/login/server.go | 110 +
auth/login/server_test.go | 49 +
auth/oidc.go | 148 +
auth/token.go | 31 +
auth/token/token.go | 174 +
auth/token/token_test.go | 481 +++
civil/civil.go | 332 ++
civil/civil_test.go | 547 +++
events/admission/admission.go | 18 +
events/admission/namespace.go | 55 +
events/extensions.go | 43 +
events/generator/generator.go | 32 +
events/occurrence.go | 41 +
events/policy/policy.go | 46 +
events/receiver/receiver.go | 66 +
events/registry/registry.go | 91 +
events/webhook.go | 14 +
go.mod | 155 +
go.sum | 534 +++
hack/tools.go | 17 +
hack/update-codegen.sh | 19 +
hack/update-deps.sh | 14 +
hack/verify-golangci-lint.sh | 50 +
policy/parse.go | 144 +
policy/parse_test.go | 181 +
policy/validate.go | 103 +
policy/validate_test.go | 194 +
proto/annotations/auth.pb.go | 342 ++
proto/annotations/auth.proto | 49 +
proto/annotations/doc.go | 11 +
proto/annotations/events.pb.go | 258 ++
proto/annotations/events.proto | 29 +
proto/capabilities/capabilities.go | 189 +
proto/capabilities/capabilities.pb.go | 661 ++++
proto/capabilities/capabilities.proto | 137 +
proto/capabilities/capabilities_test.go | 139 +
proto/capabilities/doc.go | 9 +
proto/capabilities/roles.go | 161 +
proto/google/api/annotations.proto | 31 +
proto/google/api/field_behavior.proto | 90 +
proto/google/api/http.proto | 375 ++
proto/google/api/httpbody.proto | 81 +
proto/google/api/resource.proto | 239 ++
.../advisory/v1/advisory.platform.pb.go | 1936 ++++++++++
.../advisory/v1/advisory.platform.pb.gw.go | 256 ++
.../advisory/v1/advisory.platform.proto | 233 ++
.../advisory/v1/advisory.platform_grpc.pb.go | 146 +
proto/platform/advisory/v1/clients.go | 81 +
proto/platform/advisory/v1/doc.go | 10 +
proto/platform/advisory/v1/test/advisory.go | 70 +
proto/platform/auth/v1/auth.platform.event.go | 21 +
proto/platform/auth/v1/auth.platform.pb.go | 562 +++
proto/platform/auth/v1/auth.platform.pb.gw.go | 237 ++
proto/platform/auth/v1/auth.platform.proto | 111 +
.../platform/auth/v1/auth.platform_grpc.pb.go | 147 +
proto/platform/auth/v1/doc.go | 10 +
proto/platform/auth/v1/test/mock_auth.go | 75 +
proto/platform/clients.go | 195 +
proto/platform/common/v1/doc.go | 9 +
proto/platform/common/v1/uidp.platform.pb.go | 184 +
proto/platform/common/v1/uidp.platform.proto | 19 +
proto/platform/events/v1/doc.go | 12 +
.../events/v1/identities.platform.event.go | 16 +
.../events/v1/identities.platform.pb.go | 416 +++
.../events/v1/identities.platform.pb.gw.go | 252 ++
.../events/v1/identities.platform.proto | 97 +
.../events/v1/identities.platform_grpc.pb.go | 146 +
.../events/v1/subscriptions.platform.event.go | 45 +
.../events/v1/subscriptions.platform.pb.go | 510 +++
.../events/v1/subscriptions.platform.pb.gw.go | 389 ++
.../events/v1/subscriptions.platform.proto | 92 +
.../v1/subscriptions.platform_grpc.pb.go | 184 +
.../v1/account_associations.platform.event.go | 41 +
.../v1/account_associations.platform.pb.go | 1120 ++++++
.../v1/account_associations.platform.pb.gw.go | 623 ++++
.../v1/account_associations.platform.proto | 192 +
.../account_associations.platform_grpc.pb.go | 259 ++
proto/platform/iam/v1/clients.go | 179 +
proto/platform/iam/v1/doc.go | 19 +
proto/platform/iam/v1/group.platform.event.go | 38 +
proto/platform/iam/v1/group.platform.pb.go | 570 +++
proto/platform/iam/v1/group.platform.pb.gw.go | 506 +++
proto/platform/iam/v1/group.platform.proto | 127 +
.../platform/iam/v1/group.platform_grpc.pb.go | 221 ++
.../iam/v1/group_invites.platform.event.go | 48 +
.../iam/v1/group_invites.platform.pb.go | 934 +++++
.../iam/v1/group_invites.platform.pb.gw.go | 472 +++
.../iam/v1/group_invites.platform.proto | 165 +
.../iam/v1/group_invites.platform_grpc.pb.go | 231 ++
.../iam/v1/identity.platform.event.go | 40 +
proto/platform/iam/v1/identity.platform.pb.go | 1357 +++++++
.../iam/v1/identity.platform.pb.gw.go | 591 +++
proto/platform/iam/v1/identity.platform.proto | 251 ++
.../iam/v1/identity.platform_grpc.pb.go | 258 ++
.../v1/identity_providers.platform.event.go | 40 +
.../iam/v1/identity_providers.platform.pb.go | 693 ++++
.../v1/identity_providers.platform.pb.gw.go | 506 +++
.../iam/v1/identity_providers.platform.proto | 149 +
.../v1/identity_providers.platform_grpc.pb.go | 221 ++
.../iam/v1/policies.platform.event.go | 45 +
proto/platform/iam/v1/policies.platform.pb.go | 1027 +++++
.../iam/v1/policies.platform.pb.gw.go | 708 ++++
proto/platform/iam/v1/policies.platform.proto | 208 ++
.../iam/v1/policies.platform_grpc.pb.go | 295 ++
proto/platform/iam/v1/role.platform.event.go | 23 +
proto/platform/iam/v1/role.platform.pb.go | 540 +++
proto/platform/iam/v1/role.platform.pb.gw.go | 506 +++
proto/platform/iam/v1/role.platform.proto | 100 +
.../platform/iam/v1/role.platform_grpc.pb.go | 221 ++
.../iam/v1/role_binding.platform.event.go | 38 +
.../iam/v1/role_binding.platform.pb.go | 687 ++++
.../iam/v1/role_binding.platform.pb.gw.go | 506 +++
.../iam/v1/role_binding.platform.proto | 131 +
.../iam/v1/role_binding.platform_grpc.pb.go | 221 ++
proto/platform/iam/v1/sigstore.platform.pb.go | 803 ++++
.../iam/v1/sigstore.platform.pb.gw.go | 506 +++
proto/platform/iam/v1/sigstore.platform.proto | 134 +
.../iam/v1/sigstore.platform_grpc.pb.go | 221 ++
.../iam/v1/test/mock_account_accociations.go | 103 +
proto/platform/iam/v1/test/mock_client.go | 77 +
.../iam/v1/test/mock_deprecatedidentities.go | 42 +
proto/platform/iam/v1/test/mock_groups.go | 105 +
proto/platform/iam/v1/test/mock_identities.go | 102 +
.../iam/v1/test/mock_identity_providers.go | 86 +
proto/platform/iam/v1/test/mock_invites.go | 86 +
proto/platform/iam/v1/test/mock_policies.go | 118 +
.../iam/v1/test/mock_role_bindings.go | 86 +
proto/platform/iam/v1/test/mock_roles.go | 86 +
proto/platform/iam/v1/test/mock_sigstore.go | 85 +
.../iam/v1/test/mock_subscriptions.go | 86 +
proto/platform/oidc/v1/clients.go | 101 +
proto/platform/oidc/v1/doc.go | 10 +
proto/platform/oidc/v1/oidc.platform.pb.go | 459 +++
proto/platform/oidc/v1/oidc.platform.pb.gw.go | 341 ++
proto/platform/oidc/v1/oidc.platform.proto | 64 +
.../platform/oidc/v1/oidc.platform_grpc.pb.go | 146 +
proto/platform/oidc/v1/test/mock_client.go | 26 +
proto/platform/oidc/v1/test/mock_sts.go | 53 +
proto/platform/ping/v1/clients.go | 80 +
proto/platform/ping/v1/doc.go | 10 +
proto/platform/ping/v1/ping.platform.pb.go | 216 ++
proto/platform/ping/v1/ping.platform.pb.gw.go | 153 +
proto/platform/ping/v1/ping.platform.proto | 29 +
.../platform/ping/v1/ping.platform_grpc.pb.go | 109 +
proto/platform/ping/v1/test/ping.go | 52 +
proto/platform/registry/v1/clients.go | 81 +
proto/platform/registry/v1/doc.go | 10 +
.../registry/v1/registry.platform.pb.go | 3295 +++++++++++++++++
.../registry/v1/registry.platform.pb.gw.go | 1406 +++++++
.../registry/v1/registry.platform.proto | 457 +++
.../registry/v1/registry.platform_grpc.pb.go | 518 +++
proto/platform/registry/v1/test/registry.go | 231 ++
.../tenant/v1/attestation.platform.pb.go | 389 ++
.../tenant/v1/attestation.platform.pb.gw.go | 169 +
.../tenant/v1/attestation.platform.proto | 63 +
.../tenant/v1/attestation.platform_grpc.pb.go | 109 +
proto/platform/tenant/v1/clients.go | 164 +
.../tenant/v1/cluster.platform.event.go | 45 +
.../platform/tenant/v1/cluster.platform.pb.go | 2934 +++++++++++++++
.../tenant/v1/cluster.platform.pb.gw.go | 838 +++++
.../platform/tenant/v1/cluster.platform.proto | 479 +++
.../tenant/v1/cluster.platform_grpc.pb.go | 369 ++
.../platform/tenant/v1/context.platform.pb.go | 876 +++++
.../platform/tenant/v1/context.platform.proto | 119 +
.../tenant/v1/context.platform_grpc.pb.go | 109 +
proto/platform/tenant/v1/doc.go | 21 +
.../tenant/v1/namespace.platform.pb.go | 395 ++
.../tenant/v1/namespace.platform.proto | 61 +
.../tenant/v1/namespace.platform_grpc.pb.go | 109 +
proto/platform/tenant/v1/node.platform.pb.go | 499 +++
proto/platform/tenant/v1/node.platform.proto | 78 +
.../tenant/v1/node.platform_grpc.pb.go | 109 +
.../tenant/v1/policy_results.platform.pb.go | 770 ++++
.../v1/policy_results.platform.pb.gw.go | 171 +
.../tenant/v1/policy_results.platform.proto | 113 +
.../v1/policy_results.platform_grpc.pb.go | 109 +
.../platform/tenant/v1/record.platform.pb.go | 1465 ++++++++
.../tenant/v1/record.platform.pb.gw.go | 205 +
.../platform/tenant/v1/record.platform.proto | 203 +
.../tenant/v1/record.platform_grpc.pb.go | 109 +
proto/platform/tenant/v1/risk.platform.pb.go | 947 +++++
.../platform/tenant/v1/risk.platform.pb.gw.go | 171 +
proto/platform/tenant/v1/risk.platform.proto | 116 +
.../tenant/v1/risk.platform_grpc.pb.go | 109 +
proto/platform/tenant/v1/sbom.platform.pb.go | 1058 ++++++
.../platform/tenant/v1/sbom.platform.pb.gw.go | 169 +
proto/platform/tenant/v1/sbom.platform.proto | 131 +
.../tenant/v1/sbom.platform_grpc.pb.go | 109 +
.../tenant/v1/signature.platform.pb.go | 731 ++++
.../tenant/v1/signature.platform.proto | 110 +
.../tenant/v1/signature.platform_grpc.pb.go | 109 +
.../tenant/v1/test/mock_attestations.go | 38 +
proto/platform/tenant/v1/test/mock_client.go | 81 +
proto/platform/tenant/v1/test/mock_cluster.go | 150 +
.../platform/tenant/v1/test/mock_contexts.go | 38 +
.../tenant/v1/test/mock_namespaces.go | 38 +
proto/platform/tenant/v1/test/mock_nodes.go | 38 +
.../tenant/v1/test/mock_policy_results.go | 38 +
proto/platform/tenant/v1/test/mock_records.go | 38 +
proto/platform/tenant/v1/test/mock_risks.go | 38 +
proto/platform/tenant/v1/test/mock_sboms.go | 38 +
.../tenant/v1/test/mock_signatures.go | 38 +
proto/platform/tenant/v1/test/mock_vuln.go | 38 +
.../platform/tenant/v1/test/mock_workloads.go | 38 +
proto/platform/tenant/v1/vuln.platform.pb.go | 1138 ++++++
.../platform/tenant/v1/vuln.platform.pb.gw.go | 171 +
proto/platform/tenant/v1/vuln.platform.proto | 162 +
.../tenant/v1/vuln.platform_grpc.pb.go | 109 +
.../tenant/v1/workload.platform.pb.go | 436 +++
.../tenant/v1/workload.platform.proto | 71 +
.../tenant/v1/workload.platform_grpc.pb.go | 109 +
proto/platform/test/mock_clients.go | 86 +
proto/platform/test/mock_server.go | 45 +
sts/sts.go | 314 ++
sts/sts_test.go | 424 +++
sts/tokensource.go | 44 +
uidp/ancestry.go | 75 +
uidp/ancestry_test.go | 177 +
uidp/doc.go | 8 +
uidp/uid.go | 65 +
uidp/uid_test.go | 20 +
validation/aws_account.go | 30 +
validation/aws_account_test.go | 32 +
validation/bundles.go | 30 +
validation/bundles_test.go | 37 +
validation/enforcer_options.go | 27 +
validation/name.go | 28 +
validation/name_test.go | 34 +
validation/readme.go | 66 +
validation/readme_test.go | 75 +
validation/tag.go | 29 +
validation/tag_test.go | 40 +
250 files changed, 59411 insertions(+), 21 deletions(-)
create mode 100644 .chainguard/source.yaml
create mode 100644 .gitignore
create mode 100644 .golangci.yml
delete mode 100644 CODEOWNERS
create mode 100644 LICENSE
create mode 100644 auth/aws/e2e_test.go
create mode 100644 auth/aws/generate.go
create mode 100644 auth/aws/verify.go
create mode 100644 auth/aws/verify_options.go
create mode 100644 auth/context.go
create mode 100644 auth/file.go
create mode 100644 auth/login/html.go
create mode 100644 auth/login/login.go
create mode 100644 auth/login/options.go
create mode 100644 auth/login/options_test.go
create mode 100644 auth/login/orgcheck.go
create mode 100644 auth/login/orgcheck_test.go
create mode 100644 auth/login/server.go
create mode 100644 auth/login/server_test.go
create mode 100644 auth/oidc.go
create mode 100644 auth/token.go
create mode 100644 auth/token/token.go
create mode 100644 auth/token/token_test.go
create mode 100644 civil/civil.go
create mode 100644 civil/civil_test.go
create mode 100644 events/admission/admission.go
create mode 100644 events/admission/namespace.go
create mode 100644 events/extensions.go
create mode 100644 events/generator/generator.go
create mode 100644 events/occurrence.go
create mode 100644 events/policy/policy.go
create mode 100644 events/receiver/receiver.go
create mode 100644 events/registry/registry.go
create mode 100644 events/webhook.go
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 hack/tools.go
create mode 100755 hack/update-codegen.sh
create mode 100755 hack/update-deps.sh
create mode 100755 hack/verify-golangci-lint.sh
create mode 100644 policy/parse.go
create mode 100644 policy/parse_test.go
create mode 100644 policy/validate.go
create mode 100644 policy/validate_test.go
create mode 100644 proto/annotations/auth.pb.go
create mode 100644 proto/annotations/auth.proto
create mode 100644 proto/annotations/doc.go
create mode 100644 proto/annotations/events.pb.go
create mode 100644 proto/annotations/events.proto
create mode 100644 proto/capabilities/capabilities.go
create mode 100644 proto/capabilities/capabilities.pb.go
create mode 100644 proto/capabilities/capabilities.proto
create mode 100644 proto/capabilities/capabilities_test.go
create mode 100644 proto/capabilities/doc.go
create mode 100644 proto/capabilities/roles.go
create mode 100644 proto/google/api/annotations.proto
create mode 100644 proto/google/api/field_behavior.proto
create mode 100644 proto/google/api/http.proto
create mode 100644 proto/google/api/httpbody.proto
create mode 100644 proto/google/api/resource.proto
create mode 100644 proto/platform/advisory/v1/advisory.platform.pb.go
create mode 100644 proto/platform/advisory/v1/advisory.platform.pb.gw.go
create mode 100644 proto/platform/advisory/v1/advisory.platform.proto
create mode 100644 proto/platform/advisory/v1/advisory.platform_grpc.pb.go
create mode 100644 proto/platform/advisory/v1/clients.go
create mode 100644 proto/platform/advisory/v1/doc.go
create mode 100644 proto/platform/advisory/v1/test/advisory.go
create mode 100644 proto/platform/auth/v1/auth.platform.event.go
create mode 100644 proto/platform/auth/v1/auth.platform.pb.go
create mode 100644 proto/platform/auth/v1/auth.platform.pb.gw.go
create mode 100644 proto/platform/auth/v1/auth.platform.proto
create mode 100644 proto/platform/auth/v1/auth.platform_grpc.pb.go
create mode 100644 proto/platform/auth/v1/doc.go
create mode 100644 proto/platform/auth/v1/test/mock_auth.go
create mode 100644 proto/platform/clients.go
create mode 100644 proto/platform/common/v1/doc.go
create mode 100644 proto/platform/common/v1/uidp.platform.pb.go
create mode 100644 proto/platform/common/v1/uidp.platform.proto
create mode 100644 proto/platform/events/v1/doc.go
create mode 100644 proto/platform/events/v1/identities.platform.event.go
create mode 100644 proto/platform/events/v1/identities.platform.pb.go
create mode 100644 proto/platform/events/v1/identities.platform.pb.gw.go
create mode 100644 proto/platform/events/v1/identities.platform.proto
create mode 100644 proto/platform/events/v1/identities.platform_grpc.pb.go
create mode 100644 proto/platform/events/v1/subscriptions.platform.event.go
create mode 100644 proto/platform/events/v1/subscriptions.platform.pb.go
create mode 100644 proto/platform/events/v1/subscriptions.platform.pb.gw.go
create mode 100644 proto/platform/events/v1/subscriptions.platform.proto
create mode 100644 proto/platform/events/v1/subscriptions.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/account_associations.platform.event.go
create mode 100644 proto/platform/iam/v1/account_associations.platform.pb.go
create mode 100644 proto/platform/iam/v1/account_associations.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/account_associations.platform.proto
create mode 100644 proto/platform/iam/v1/account_associations.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/clients.go
create mode 100644 proto/platform/iam/v1/doc.go
create mode 100644 proto/platform/iam/v1/group.platform.event.go
create mode 100644 proto/platform/iam/v1/group.platform.pb.go
create mode 100644 proto/platform/iam/v1/group.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/group.platform.proto
create mode 100644 proto/platform/iam/v1/group.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/group_invites.platform.event.go
create mode 100644 proto/platform/iam/v1/group_invites.platform.pb.go
create mode 100644 proto/platform/iam/v1/group_invites.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/group_invites.platform.proto
create mode 100644 proto/platform/iam/v1/group_invites.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/identity.platform.event.go
create mode 100644 proto/platform/iam/v1/identity.platform.pb.go
create mode 100644 proto/platform/iam/v1/identity.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/identity.platform.proto
create mode 100644 proto/platform/iam/v1/identity.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/identity_providers.platform.event.go
create mode 100644 proto/platform/iam/v1/identity_providers.platform.pb.go
create mode 100644 proto/platform/iam/v1/identity_providers.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/identity_providers.platform.proto
create mode 100644 proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/policies.platform.event.go
create mode 100644 proto/platform/iam/v1/policies.platform.pb.go
create mode 100644 proto/platform/iam/v1/policies.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/policies.platform.proto
create mode 100644 proto/platform/iam/v1/policies.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/role.platform.event.go
create mode 100644 proto/platform/iam/v1/role.platform.pb.go
create mode 100644 proto/platform/iam/v1/role.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/role.platform.proto
create mode 100644 proto/platform/iam/v1/role.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/role_binding.platform.event.go
create mode 100644 proto/platform/iam/v1/role_binding.platform.pb.go
create mode 100644 proto/platform/iam/v1/role_binding.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/role_binding.platform.proto
create mode 100644 proto/platform/iam/v1/role_binding.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/sigstore.platform.pb.go
create mode 100644 proto/platform/iam/v1/sigstore.platform.pb.gw.go
create mode 100644 proto/platform/iam/v1/sigstore.platform.proto
create mode 100644 proto/platform/iam/v1/sigstore.platform_grpc.pb.go
create mode 100644 proto/platform/iam/v1/test/mock_account_accociations.go
create mode 100644 proto/platform/iam/v1/test/mock_client.go
create mode 100644 proto/platform/iam/v1/test/mock_deprecatedidentities.go
create mode 100644 proto/platform/iam/v1/test/mock_groups.go
create mode 100644 proto/platform/iam/v1/test/mock_identities.go
create mode 100644 proto/platform/iam/v1/test/mock_identity_providers.go
create mode 100644 proto/platform/iam/v1/test/mock_invites.go
create mode 100644 proto/platform/iam/v1/test/mock_policies.go
create mode 100644 proto/platform/iam/v1/test/mock_role_bindings.go
create mode 100644 proto/platform/iam/v1/test/mock_roles.go
create mode 100644 proto/platform/iam/v1/test/mock_sigstore.go
create mode 100644 proto/platform/iam/v1/test/mock_subscriptions.go
create mode 100644 proto/platform/oidc/v1/clients.go
create mode 100644 proto/platform/oidc/v1/doc.go
create mode 100644 proto/platform/oidc/v1/oidc.platform.pb.go
create mode 100644 proto/platform/oidc/v1/oidc.platform.pb.gw.go
create mode 100644 proto/platform/oidc/v1/oidc.platform.proto
create mode 100644 proto/platform/oidc/v1/oidc.platform_grpc.pb.go
create mode 100644 proto/platform/oidc/v1/test/mock_client.go
create mode 100644 proto/platform/oidc/v1/test/mock_sts.go
create mode 100644 proto/platform/ping/v1/clients.go
create mode 100644 proto/platform/ping/v1/doc.go
create mode 100644 proto/platform/ping/v1/ping.platform.pb.go
create mode 100644 proto/platform/ping/v1/ping.platform.pb.gw.go
create mode 100644 proto/platform/ping/v1/ping.platform.proto
create mode 100644 proto/platform/ping/v1/ping.platform_grpc.pb.go
create mode 100644 proto/platform/ping/v1/test/ping.go
create mode 100644 proto/platform/registry/v1/clients.go
create mode 100644 proto/platform/registry/v1/doc.go
create mode 100644 proto/platform/registry/v1/registry.platform.pb.go
create mode 100644 proto/platform/registry/v1/registry.platform.pb.gw.go
create mode 100644 proto/platform/registry/v1/registry.platform.proto
create mode 100644 proto/platform/registry/v1/registry.platform_grpc.pb.go
create mode 100644 proto/platform/registry/v1/test/registry.go
create mode 100644 proto/platform/tenant/v1/attestation.platform.pb.go
create mode 100644 proto/platform/tenant/v1/attestation.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/attestation.platform.proto
create mode 100644 proto/platform/tenant/v1/attestation.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/clients.go
create mode 100644 proto/platform/tenant/v1/cluster.platform.event.go
create mode 100644 proto/platform/tenant/v1/cluster.platform.pb.go
create mode 100644 proto/platform/tenant/v1/cluster.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/cluster.platform.proto
create mode 100644 proto/platform/tenant/v1/cluster.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/context.platform.pb.go
create mode 100644 proto/platform/tenant/v1/context.platform.proto
create mode 100644 proto/platform/tenant/v1/context.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/doc.go
create mode 100644 proto/platform/tenant/v1/namespace.platform.pb.go
create mode 100644 proto/platform/tenant/v1/namespace.platform.proto
create mode 100644 proto/platform/tenant/v1/namespace.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/node.platform.pb.go
create mode 100644 proto/platform/tenant/v1/node.platform.proto
create mode 100644 proto/platform/tenant/v1/node.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/policy_results.platform.pb.go
create mode 100644 proto/platform/tenant/v1/policy_results.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/policy_results.platform.proto
create mode 100644 proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/record.platform.pb.go
create mode 100644 proto/platform/tenant/v1/record.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/record.platform.proto
create mode 100644 proto/platform/tenant/v1/record.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/risk.platform.pb.go
create mode 100644 proto/platform/tenant/v1/risk.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/risk.platform.proto
create mode 100644 proto/platform/tenant/v1/risk.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/sbom.platform.pb.go
create mode 100644 proto/platform/tenant/v1/sbom.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/sbom.platform.proto
create mode 100644 proto/platform/tenant/v1/sbom.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/signature.platform.pb.go
create mode 100644 proto/platform/tenant/v1/signature.platform.proto
create mode 100644 proto/platform/tenant/v1/signature.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/test/mock_attestations.go
create mode 100644 proto/platform/tenant/v1/test/mock_client.go
create mode 100644 proto/platform/tenant/v1/test/mock_cluster.go
create mode 100644 proto/platform/tenant/v1/test/mock_contexts.go
create mode 100644 proto/platform/tenant/v1/test/mock_namespaces.go
create mode 100644 proto/platform/tenant/v1/test/mock_nodes.go
create mode 100644 proto/platform/tenant/v1/test/mock_policy_results.go
create mode 100644 proto/platform/tenant/v1/test/mock_records.go
create mode 100644 proto/platform/tenant/v1/test/mock_risks.go
create mode 100644 proto/platform/tenant/v1/test/mock_sboms.go
create mode 100644 proto/platform/tenant/v1/test/mock_signatures.go
create mode 100644 proto/platform/tenant/v1/test/mock_vuln.go
create mode 100644 proto/platform/tenant/v1/test/mock_workloads.go
create mode 100644 proto/platform/tenant/v1/vuln.platform.pb.go
create mode 100644 proto/platform/tenant/v1/vuln.platform.pb.gw.go
create mode 100644 proto/platform/tenant/v1/vuln.platform.proto
create mode 100644 proto/platform/tenant/v1/vuln.platform_grpc.pb.go
create mode 100644 proto/platform/tenant/v1/workload.platform.pb.go
create mode 100644 proto/platform/tenant/v1/workload.platform.proto
create mode 100644 proto/platform/tenant/v1/workload.platform_grpc.pb.go
create mode 100644 proto/platform/test/mock_clients.go
create mode 100644 proto/platform/test/mock_server.go
create mode 100644 sts/sts.go
create mode 100644 sts/sts_test.go
create mode 100644 sts/tokensource.go
create mode 100644 uidp/ancestry.go
create mode 100644 uidp/ancestry_test.go
create mode 100644 uidp/doc.go
create mode 100644 uidp/uid.go
create mode 100644 uidp/uid_test.go
create mode 100644 validation/aws_account.go
create mode 100644 validation/aws_account_test.go
create mode 100644 validation/bundles.go
create mode 100644 validation/bundles_test.go
create mode 100644 validation/enforcer_options.go
create mode 100644 validation/name.go
create mode 100644 validation/name_test.go
create mode 100644 validation/readme.go
create mode 100644 validation/readme_test.go
create mode 100644 validation/tag.go
create mode 100644 validation/tag_test.go
diff --git a/.chainguard/source.yaml b/.chainguard/source.yaml
new file mode 100644
index 00000000..4322b525
--- /dev/null
+++ b/.chainguard/source.yaml
@@ -0,0 +1,15 @@
+# Copyright 2023 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+spec:
+ authorities:
+ - keyless:
+ url: https://fulcio.sigstore.dev
+ identities:
+ - subjectRegExp: .+@chainguard.dev$
+ issuer: https://accounts.google.com
+ ctlog:
+ url: https://rekor.sigstore.dev
+ - key:
+ # Allow commits signed by Github (merge commits)
+ kms: https://github.com/web-flow.gpg
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..1590cdc0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,29 @@
+# Vim swap files
+*.swp
+
+**/third_party/VENDOR-LICENSE/LICENSE
+**/third_party/VENDOR-LICENSE/vendor/golang.org/x/
+**/third_party/VENDOR-LICENSE/golang.org/x/
+
+**/.idea/
+
+**/.vscode/
+
+**/.DS_Store
+
+# Generated by CI
+/**/gha-creds*.json
+
+# Generated openapi schemas
+/proto/**/*.swagger.json
+/proto/**/*.swagger.yaml
+
+# SQLite
+*.db
+
+# Local dev
+**/.ko.yaml.orig
+**/.ko.yaml.tmp
+
+# Ignore generated credentials from google-github-actions/auth
+gha-creds-*.json
diff --git a/.golangci.yml b/.golangci.yml
new file mode 100644
index 00000000..41279d73
--- /dev/null
+++ b/.golangci.yml
@@ -0,0 +1,35 @@
+# Copyright 2023 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+linters:
+ enable:
+ - asciicheck
+ - unused
+ - errcheck
+ - errorlint
+ - gofmt
+ - goimports
+ - gosec
+ - gocritic
+ - importas
+ - prealloc
+ - revive
+ - misspell
+ - stylecheck
+ - tparallel
+ - unconvert
+ - unparam
+ - whitespace
+output:
+ uniq-by-line: false
+issues:
+ exclude-rules:
+ - path: _test\.go
+ linters:
+ - errcheck
+ - gosec
+ max-issues-per-linter: 0
+ max-same-issues: 0
+run:
+ issues-exit-code: 1
+ timeout: 10m
diff --git a/CODEOWNERS b/CODEOWNERS
deleted file mode 100644
index 4066d21e..00000000
--- a/CODEOWNERS
+++ /dev/null
@@ -1 +0,0 @@
-@cmdpdx
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..261eeb9e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
diff --git a/README.md b/README.md
index fe1318c4..251625f5 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,34 @@
# SDK
-### The SDK has moved to a public repo at [github.com/chainguard-dev/sdk](https://github.com/chainguard-dev/sdk)!
-
-For guidance working with the SDK, post questions to
-[#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST) in Slack.
-
-## Recommended workflow for making SDK changes
-
-The workflow will be different since changes to SDK are not immediately available in `mono`. This recommended workflow
-is still a work in progress and subject to change as we discover new pain points in the process.
-
-1. Determine if your change is appropriate for `chainguard.dev/sdk` (i.e. is it okay to be public), or would
-`mono/api-internal` be a better fit?
-2. Make changes to your local copy of `chainguard.dev/sdk`. If you are developing something in `mono` that relies
-on those changes, it may be helpful to add a temporary `replace chainguard.dev/sdk => [path to your local SDK repo]`
-in the relevant `go.mod` for faster iteration.
-3. Push `chainguard.dev/sdk` changes and open a PR in [github.com/chainguard-dev/sdk](https://github.com/chainguard-dev/sdk)
-and post in [#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST).
-or tag relevant reviewers.
-4. Cut a new release, update necessary `go.mod` of dependencies. The release cadence for SDK is still TBD, at the moment
-ad hoc releases as necessary are fine. If you're unsure, ask in [#eng-squad-experience](https://chainguard-dev.slack.com/archives/C03JLFATBST).
+This repository contains the public [gRPC](https://grpc.io/) protos supporting
+our services and packages to ease integration with the Chainguard platform.
+
+## Updating `*.proto` files
+
+After updating a `*.proto` you'll need to update the corresponding generated go
+code.
+
+```shell
+./hack/update-codegen.sh
+```
+
+### Prerequisites
+
+Install `protoc`: https://grpc.io/docs/protoc-installation/
+
+Example for MacOS:
+
+```shell
+brew install protobuf
+```
+
+We currently require `protoc` v21.12.
+
+Install `protoc` codegen dependencies:
+
+```shell
+go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
+go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
+go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
+go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
+```
diff --git a/auth/aws/e2e_test.go b/auth/aws/e2e_test.go
new file mode 100644
index 00000000..98482b01
--- /dev/null
+++ b/auth/aws/e2e_test.go
@@ -0,0 +1,160 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package aws
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+ "time"
+
+ "github.com/aws/aws-sdk-go-v2/aws"
+ "github.com/google/go-cmp/cmp"
+ "k8s.io/apimachinery/pkg/util/sets"
+)
+
+func epochTime() time.Time {
+ return time.Unix(0, 0)
+}
+
+func TestGenerateToken(t *testing.T) {
+ timeNow = epochTime
+
+ var creds = aws.Credentials{AccessKeyID: "AKID", SecretAccessKey: "SECRET", SessionToken: "SESSION"}
+ validToken, err := GenerateToken(context.Background(), creds, "aud", "identity")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case "/good":
+ fmt.Fprintf(w, `{
+ "GetCallerIdentityResponse": {
+ "GetCallerIdentityResult": {
+ "UserId": "userid",
+ "Account": "123456789012",
+ "Arn": "arn"
+ }
+ }
+ }`)
+ case "/reject":
+ w.WriteHeader(http.StatusBadRequest)
+ fmt.Fprintf(w, "go away")
+ }
+ }))
+
+ tests := map[string]struct {
+ audience string
+ identity string
+ timestamp time.Time
+ stsURL string
+ token string
+ wantErr error
+ }{
+ "happy path": {
+ audience: "aud",
+ identity: "identity",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ wantErr: nil,
+ },
+ "audience mismatch": {
+ audience: "bad audience",
+ identity: "identity",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ wantErr: ErrInvalidAudience,
+ },
+ "identity mismatch": {
+ audience: "aud",
+ identity: "identity is wrong",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ wantErr: ErrInvalidIdentity,
+ },
+ "expired token": {
+ audience: "aud",
+ identity: "identity",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0).Add(16 * time.Minute),
+ token: validToken,
+ wantErr: ErrTokenExpired,
+ },
+ "no identity set": {
+ audience: "aud",
+ identity: "",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ wantErr: ErrInvalidVerificationConfiguration,
+ },
+ "bad token encoding": {
+ audience: "aud",
+ identity: "identity",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: "no-base64-encoded",
+ wantErr: ErrInvalidEncoding,
+ },
+ "base64 encoded but not even an http request": {
+ audience: "aud",
+ identity: "identity",
+ stsURL: ts.URL + "/good",
+ timestamp: time.Unix(0, 0),
+ token: "bm90IGFuIGh0dHAgcmVxdWVzdA==", // echo -n "not an http request" | base64
+ wantErr: ErrInvalidEncoding,
+ },
+ "bad sts URL": {
+ audience: "aud",
+ identity: "identity",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ stsURL: "\t\n",
+ wantErr: ErrInvalidVerificationConfiguration,
+ },
+ "rejected token": {
+ audience: "aud",
+ identity: "identity",
+ timestamp: time.Unix(0, 0),
+ token: validToken,
+ stsURL: ts.URL + "/reject",
+ wantErr: ErrTokenRejected,
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ gotClaims, err := VerifyToken(
+ context.Background(),
+ test.token,
+ WithAudience(sets.New(test.audience)),
+ WithIdentity(test.identity),
+ withSTSURL(test.stsURL),
+ withTimestamp(test.timestamp))
+ if err != test.wantErr { //nolint:errorlint
+ t.Errorf("received error %T and wanted %T", err, test.wantErr)
+ }
+ if err != nil {
+ return
+ }
+
+ expectedClaims := &VerifiedClaims{
+ UserID: "userid",
+ Account: "123456789012",
+ Arn: "arn",
+ }
+ if diff := cmp.Diff(gotClaims, expectedClaims); diff != "" {
+ t.Errorf("got different claims than expected diff = %s", diff)
+ }
+ })
+ }
+}
diff --git a/auth/aws/generate.go b/auth/aws/generate.go
new file mode 100644
index 00000000..5bfcef03
--- /dev/null
+++ b/auth/aws/generate.go
@@ -0,0 +1,62 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package aws
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "fmt"
+ "net/http"
+ "time"
+
+ "github.com/aws/aws-sdk-go-v2/aws"
+ v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
+)
+
+var timeNow = time.Now
+
+const (
+ audHeader = `Chainguard-Audience`
+ idHeader = `Chainguard-Identity`
+)
+
+// GenerateToken creates token using the supplied AWS credentials that can prove the user's AWS identity. Audience and identity are
+// the Chainguard STS url (e.g https://issuer.enforce.dev) and the UID of the Chainguard assumable identity to assume via STS.
+func GenerateToken(ctx context.Context, creds aws.Credentials, audience, identity string) (string, error) {
+ req, err := http.NewRequest("POST", "https://sts.amazonaws.com", nil)
+ if err != nil {
+ return "", fmt.Errorf("failed to create new HTTP request: %w", err)
+ }
+
+ req.URL.Path = "/"
+ req.URL.RawQuery = "Action=GetCallerIdentity&Version=2011-06-15"
+ req.Header.Add("Accept", "application/json")
+ req.Header.Add(audHeader, audience)
+ req.Header.Add(idHeader, identity)
+
+ const (
+ // hashInit is the sha256 hash of an empty buffer, hex encoded.
+ hashInit = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` //nolint:gosec
+
+ // STS service details for signing
+ svc = `sts`
+ region = `us-east-1`
+ )
+
+ err = v4.NewSigner().SignHTTP(ctx, creds, req, hashInit, svc, region, timeNow())
+ if err != nil {
+ return "", fmt.Errorf("failed to sign GetCallerIdentity request with AWS credentials: %w", err)
+ }
+
+ var b bytes.Buffer
+ err = req.Write(&b)
+ if err != nil {
+ return "", fmt.Errorf("failed to serialize GetCallerIdentity HTTP request to buffer: %w", err)
+ }
+
+ return base64.URLEncoding.EncodeToString(b.Bytes()), nil
+}
diff --git a/auth/aws/verify.go b/auth/aws/verify.go
new file mode 100644
index 00000000..2abca3ee
--- /dev/null
+++ b/auth/aws/verify.go
@@ -0,0 +1,119 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package aws
+
+import (
+ "bufio"
+ "bytes"
+ "context"
+ "encoding/base64"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io"
+ "net/http"
+ "net/url"
+ "time"
+
+ "github.com/chainguard-dev/clog"
+)
+
+var (
+ ErrTokenRejected = errors.New("token rejected by AWS STS endpoint")
+ ErrTokenExpired = errors.New("token expired")
+ ErrInvalidAudience = errors.New("audience header in token does not match expected audience")
+ ErrInvalidIdentity = errors.New("identity header in token does not match expected identity")
+ ErrInvalidEncoding = errors.New("invalid token encoding")
+ ErrInvalidVerificationConfiguration = errors.New("verifcation was incorrectly configured")
+)
+
+type VerifiedClaims struct {
+ UserID string `json:"UserId"`
+ Arn string `json:"Arn"`
+ Account string `json:"Account"`
+}
+
+func VerifyToken(ctx context.Context, token string, opts ...VerifyOption) (*VerifiedClaims, error) {
+ conf, err := newConfigFromOptions(opts...)
+ if err != nil {
+ clog.FromContext(ctx).Errorf("invalid verification configuration: %v", err)
+ return nil, ErrInvalidVerificationConfiguration
+ }
+
+ var req *http.Request
+ {
+ decoded, err := base64.URLEncoding.DecodeString(token)
+ if err != nil {
+ return nil, ErrInvalidEncoding
+ }
+ r := bufio.NewReader(bytes.NewReader(decoded))
+ req, err = http.ReadRequest(r)
+ if err != nil {
+ return nil, ErrInvalidEncoding
+ }
+
+ // NB: If RequestURI is set on an outbound http.Request the client will error. This field
+ // is set because of how we serial and then parse the request so we need to unset it here.
+ req.RequestURI = ""
+ req.URL, err = url.Parse(conf.stsURL)
+ if err != nil {
+ clog.FromContext(ctx).With("sts_url", conf.stsURL).Errorf("invalid verification configuration. invalid sts url: %v", err)
+ return nil, ErrInvalidVerificationConfiguration
+ }
+ }
+
+ if got := req.Header.Get(audHeader); !conf.allowedAudiences.Has(got) {
+ clog.FromContext(ctx).With("received", got).Warn("verification failed with audience mismatch")
+ return nil, ErrInvalidAudience
+ }
+ if got := req.Header.Get(idHeader); got != conf.identity {
+ clog.FromContext(ctx).With("wanted", conf.identity, "received", got).Warn("verification failed with identity mismatch")
+ return nil, ErrInvalidIdentity
+ }
+
+ timestamp, err := time.Parse("20060102T150405Z", req.Header.Get("X-Amz-Date"))
+ if err != nil {
+ clog.FromContext(ctx).Warnf("verification failed because of a poorly formatted x-amz-date header format: %v", err)
+ return nil, ErrInvalidEncoding
+ }
+ expiry, now := timestamp.Add(15*time.Minute), conf.time()
+ if expiry.Before(now) {
+ // According to AWS docs
+ // > The signed portions (using AWS Signatures) of requests are valid within 15 minutes of the timestamp in the request.
+ // If the signature timestamp is already older than 15 minutes the token is expired and we reject it.
+ // c.f https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
+ clog.FromContext(ctx).Error("verification failed because of expired token")
+ return nil, ErrTokenExpired
+ }
+
+ resp, err := http.DefaultClient.Do(req.WithContext(ctx))
+ if err != nil {
+ clog.FromContext(ctx).Errorf("verification failed because of failure to make AWS STS request: %v", err)
+ return nil, fmt.Errorf("failed to reach AWS STS endpoint: %w", err)
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ body, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("failed to read response body from AWS STS endpoint: %w", err)
+ }
+ clog.FromContext(ctx).With("response_code", resp.StatusCode, "response", string(body)).Error("verification failed because it was rejected by AWS STS endpoint")
+ return nil, ErrTokenRejected
+ }
+
+ var response struct {
+ GetCallerIdentityResponse struct {
+ GetCallerIdentityResult VerifiedClaims
+ }
+ }
+ if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
+ clog.FromContext(ctx).Errorf("verification failed because json parsing err in response: %v", err)
+ return nil, fmt.Errorf("failed to parse json from AWS STS response %w", err)
+ }
+
+ return &response.GetCallerIdentityResponse.GetCallerIdentityResult, nil
+}
diff --git a/auth/aws/verify_options.go b/auth/aws/verify_options.go
new file mode 100644
index 00000000..2646bafd
--- /dev/null
+++ b/auth/aws/verify_options.go
@@ -0,0 +1,83 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package aws
+
+import (
+ "errors"
+ "time"
+
+ "k8s.io/apimachinery/pkg/util/sets"
+)
+
+type verifyConf struct {
+ allowedAudiences sets.Set[string]
+ identity string
+
+ time func() time.Time
+ stsURL string
+}
+
+func newDefaultConfig() *verifyConf {
+ return &verifyConf{
+ allowedAudiences: sets.New("https://issuer.enforce.dev"),
+ stsURL: "https://sts.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15",
+ time: time.Now,
+ }
+}
+
+func newConfigFromOptions(opts ...VerifyOption) (*verifyConf, error) {
+ conf := newDefaultConfig()
+ for _, o := range opts {
+ o(conf)
+ }
+ if err := conf.valid(); err != nil {
+ return nil, err
+ }
+ return conf, nil
+}
+
+func (c *verifyConf) valid() error {
+ if c.identity == "" {
+ return errors.New("must specify assume identity to verify")
+ }
+ if c.allowedAudiences.Len() == 0 {
+ return errors.New("must specify audience to verify")
+ }
+ if c.stsURL == "" {
+ return errors.New("must specify AWS STS endpoint url")
+ }
+ return nil
+}
+
+type VerifyOption func(*verifyConf)
+
+func WithAudience(aud sets.Set[string]) VerifyOption {
+ return func(c *verifyConf) {
+ c.allowedAudiences = aud
+ }
+}
+
+func WithIdentity(id string) VerifyOption {
+ return func(c *verifyConf) {
+ c.identity = id
+ }
+}
+
+// Unexported testing options
+
+func withSTSURL(url string) VerifyOption {
+ return func(c *verifyConf) {
+ c.stsURL = url
+ }
+}
+
+func withTimestamp(t time.Time) VerifyOption {
+ return func(c *verifyConf) {
+ c.time = func() time.Time {
+ return t
+ }
+ }
+}
diff --git a/auth/context.go b/auth/context.go
new file mode 100644
index 00000000..c5d909ee
--- /dev/null
+++ b/auth/context.go
@@ -0,0 +1,47 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package auth
+
+import (
+ "context"
+
+ "google.golang.org/grpc/credentials"
+)
+
+type contextAuth struct {
+ secure bool
+}
+
+// The key to associate token with context.
+type tokenKey struct{}
+
+var _ credentials.PerRPCCredentials = (*contextAuth)(nil)
+
+// GetRequestMetadata implements credentials.PerRPCCredentials
+func (ta *contextAuth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { //nolint: revive
+ return map[string]string{
+ "Authorization": GetToken(ctx),
+ }, nil
+}
+
+// RequireTransportSecurity implements credentials.PerRPCCredentials
+func (ta *contextAuth) RequireTransportSecurity() bool {
+ return ta.secure
+}
+
+// WithToken associates the token with the returned context.
+func WithToken(ctx context.Context, authz string) context.Context {
+ return context.WithValue(ctx, tokenKey{}, authz)
+}
+
+// GetToken fetches the token from the context.
+func GetToken(ctx context.Context) string {
+ v := ctx.Value(tokenKey{})
+ if v == nil {
+ return ""
+ }
+ return v.(string)
+}
diff --git a/auth/file.go b/auth/file.go
new file mode 100644
index 00000000..bfa848dc
--- /dev/null
+++ b/auth/file.go
@@ -0,0 +1,62 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package auth
+
+import (
+ "context"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc/credentials"
+)
+
+type fileAuth struct {
+ file string
+ secure bool
+
+ m sync.Mutex
+ lastUpdated time.Time
+ cache []byte
+}
+
+var _ credentials.PerRPCCredentials = (*fileAuth)(nil)
+
+// GetRequestMetadata implements credentials.PerRPCCredentials
+func (fa *fileAuth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { //nolint: revive
+ fa.m.Lock()
+ defer fa.m.Unlock()
+
+ // According to https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
+ // The kubelet proactively rotates the token if it is older than 80% of
+ // its total TTL, or if the token is older than 24 hours.
+ // We use the minimum lifetime (10m) so the nearest a token should get to
+ // expiration before it is refreshed is 2 minutes. Use 1 minute to give
+ // us wiggle room, but we should have 2 minutes to validate the token.
+ if time.Since(fa.lastUpdated) < time.Minute {
+ clog.FromContext(ctx).Infof("Using cached token, last refreshed %v", fa.lastUpdated)
+ return map[string]string{
+ "Authorization": string(fa.cache),
+ }, nil
+ }
+
+ b, err := os.ReadFile(fa.file)
+ if err != nil {
+ return nil, err
+ }
+ fa.cache = b
+ fa.lastUpdated = time.Now()
+ clog.FromContext(ctx).Info("Using fresh token.")
+ return map[string]string{
+ "Authorization": string(b),
+ }, nil
+}
+
+// RequireTransportSecurity implements credentials.PerRPCCredentials
+func (fa *fileAuth) RequireTransportSecurity() bool {
+ return fa.secure
+}
diff --git a/auth/login/html.go b/auth/login/html.go
new file mode 100644
index 00000000..0659f5dc
--- /dev/null
+++ b/auth/login/html.go
@@ -0,0 +1,71 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+var (
+ HTMLAuthSuccessful = `
+
+
+ Chainguard Authentication
+
+
+
+
+
+
+
+
+
+ Chainguard
+ authentication successful!
+
+
+ You may now close
+ this page or visit:
+ this page.
+
+
+
+
+
+`
+)
diff --git a/auth/login/login.go b/auth/login/login.go
new file mode 100644
index 00000000..256f64dd
--- /dev/null
+++ b/auth/login/login.go
@@ -0,0 +1,80 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package login implements client login functionality shared between various
+// clients
+package login
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "os"
+ "strings"
+
+ "github.com/pkg/browser"
+)
+
+func Login(ctx context.Context, opts ...Option) (token string, refreshToken string, err error) {
+ conf, err := newConfigFromOptions(opts...)
+ if err != nil {
+ return "", "", err
+ }
+
+ // Start new token server on a random available localhost port
+ s, err := newServer(ctx)
+ if err != nil {
+ return "", "", err
+ }
+ defer s.Close()
+
+ params := make(url.Values)
+ params.Set("exit", "redirect")
+ params.Set("redirect", s.URL())
+ if conf.IDP != "" {
+ params.Set("idp_id", conf.IDP)
+ }
+ if conf.OrgName != "" {
+ // NB: we reuse the idp_id query param for verified organization SSO
+ params.Set("idp_id", conf.OrgName)
+ }
+ if conf.InviteCode != "" {
+ params.Set("invite", conf.InviteCode)
+ }
+ if conf.ClientID != "" {
+ params.Set("client_id", conf.ClientID)
+ }
+ if conf.Auth0Connection != "" {
+ params.Set("connection", conf.Auth0Connection)
+ }
+ if conf.SkipRegistration {
+ params.Set("skip_registration", "true")
+ }
+ if conf.Identity != "" {
+ params.Set("identity", conf.Identity)
+ }
+ if len(conf.Audience) > 0 {
+ params.Set("audience", strings.Join(conf.Audience, ","))
+ }
+ if conf.IncludeUpstreamToken {
+ params.Set("include_upstream_token", "true")
+ }
+ if conf.CreateRefreshToken {
+ params.Set("create_refresh_token", "true")
+ }
+ u := fmt.Sprintf("%s/oauth?%s", conf.Issuer, params.Encode())
+ fmt.Fprintf(os.Stderr, "Opening browser to %s\n", u)
+ err = browser.OpenURL(u)
+ if err != nil {
+ return "", "", err
+ }
+
+ token, err = s.Token()
+ if err != nil {
+ return "", "", err
+ }
+ refreshToken = s.RefreshToken()
+ return token, refreshToken, nil
+}
diff --git a/auth/login/options.go b/auth/login/options.go
new file mode 100644
index 00000000..843e96df
--- /dev/null
+++ b/auth/login/options.go
@@ -0,0 +1,181 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "errors"
+ "fmt"
+
+ "chainguard.dev/sdk/uidp"
+)
+
+type config struct {
+ // Audience is the intended audience for the token, if different than what is
+ // configured for the oauth handler.
+ Audience []string
+
+ // URL of Chainguard Enforce OIDC Issuer. Defaults to https://issuer.enforce.dev
+ Issuer string
+
+ // Identity is the exact UIDP of an assumable identity to authenticate as.
+ Identity string
+
+ // UIDP of specific customer identity provider to log in with
+ IDP string
+
+ // OrgName is the name of an organization with custom identity provider configured to use for authentication
+ OrgName string
+
+ // Optional invite code to consume on login
+ InviteCode string
+
+ // ClientID is the ID of the oauth2 provider
+ ClientID string
+
+ // Auth0Connection is the connection parameter sent to Auth0
+ // to preselect the social connection.
+ //
+ // See docs for details: https://auth0.com/docs/api/authentication#social
+ Auth0Connection string
+
+ // SkipRegistration tells the issuer not to attempt to register
+ // if the account is not found.
+ SkipRegistration bool
+
+ // IncludeUpstreamToken tells the issuer to include the encrypted upstream token
+ // in the Chainguard token
+ IncludeUpstreamToken bool
+
+ // CreateRefreshToken tells the issuer to create a refresh token
+ CreateRefreshToken bool
+}
+
+const defaultIssuer = `https://issuer.enforce.dev`
+
+func newDefaultConfig() *config {
+ return &config{
+ Issuer: defaultIssuer,
+ }
+}
+
+func newConfigFromOptions(opts ...Option) (*config, error) {
+ conf := newDefaultConfig()
+ for _, o := range opts {
+ o(conf)
+ }
+ if err := conf.valid(); err != nil {
+ return nil, err
+ }
+ return conf, nil
+}
+
+func (c *config) valid() error {
+ if c.ClientID != "" && (c.IDP != "" || c.OrgName != "") {
+ return errors.New("must specify one of client id or custom identity provider")
+ }
+ if c.IDP != "" && c.OrgName != "" {
+ return errors.New("must specify one of identity provider id or organization name")
+ }
+ if c.ClientID == "" && c.IDP == "" && c.OrgName == "" {
+ return errors.New("must select one of client id, custom identity provider and organization name")
+ }
+
+ switch {
+ case c.IDP != "":
+ if !uidp.Valid(c.IDP) {
+ return errors.New("invalid ID for identity provider")
+ }
+ if c.Auth0Connection != "" {
+ return errors.New("identity provider ID and Auth0 connection are mutually exclusive")
+ }
+ return nil
+
+ case c.OrgName != "":
+ if c.Auth0Connection != "" {
+ return errors.New("organization name and Auth0 connection are mutually exclusive")
+ }
+
+ verified, err := orgCheck(c.OrgName, c.Issuer)
+ if err != nil {
+ return fmt.Errorf("error checking if organization is verified: %w", err)
+ }
+ if !verified {
+ return errors.New("organization is not verified must use identity provider ID to log in")
+ }
+
+ return nil
+
+ default:
+ return nil
+ }
+}
+
+type Option func(opt *config)
+
+func WithAudience(aud []string) Option {
+ return func(c *config) {
+ c.Audience = aud
+ }
+}
+
+func WithClientID(id string) Option {
+ return func(c *config) {
+ c.ClientID = id
+ }
+}
+func WithIssuer(issuer string) Option {
+ return func(c *config) {
+ c.Issuer = issuer
+ }
+}
+
+func WithIdentity(identity string) Option {
+ return func(c *config) {
+ c.Identity = identity
+ }
+}
+
+func WithIdentityProvider(idp string) Option {
+ return func(c *config) {
+ c.IDP = idp
+ }
+}
+
+func WithOrgName(org string) Option {
+ return func(c *config) {
+ c.OrgName = org
+ }
+}
+
+func WithInviteCode(inviteCode string) Option {
+ return func(c *config) {
+ c.InviteCode = inviteCode
+ }
+}
+
+func WithAuth0Connection(conn string) Option {
+ return func(c *config) {
+ c.Auth0Connection = conn
+ }
+}
+
+func WithSkipRegistration() Option {
+ return func(c *config) {
+ c.SkipRegistration = true
+ }
+}
+
+func WithIncludeUpstreamToken() Option {
+ return func(c *config) {
+ c.IncludeUpstreamToken = true
+ }
+}
+
+func WithCreateRefreshToken() Option {
+ return func(c *config) {
+ c.CreateRefreshToken = true
+ }
+}
diff --git a/auth/login/options_test.go b/auth/login/options_test.go
new file mode 100644
index 00000000..63c4671c
--- /dev/null
+++ b/auth/login/options_test.go
@@ -0,0 +1,114 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "net/http/httptest"
+ "testing"
+
+ "chainguard.dev/sdk/uidp"
+ "github.com/google/go-cmp/cmp"
+)
+
+func TestConfFromOptions(t *testing.T) {
+ id := uidp.NewUID().String()
+
+ testIssuer := httptest.NewServer(expectedBehavior("chainguard.dev"))
+
+ tests := map[string]struct {
+ Options []Option
+ WantConfig *config
+ WantErr bool
+ }{
+ "Happy path": {
+ Options: []Option{
+ WithIssuer("https://example.com"),
+ WithIdentityProvider(id),
+ WithInviteCode("foo"),
+ },
+ WantConfig: &config{
+ Issuer: "https://example.com",
+ IDP: id,
+ InviteCode: "foo",
+ },
+ },
+ "Bad IDP ID": {
+ Options: []Option{
+ WithIssuer("https://example.com"),
+ WithIdentityProvider("imnotanidp"),
+ },
+ WantErr: true,
+ },
+ "Org name": {
+ Options: []Option{
+ WithIssuer(testIssuer.URL),
+ WithOrgName("chainguard.dev"),
+ },
+ WantConfig: &config{
+ Issuer: testIssuer.URL,
+ OrgName: "chainguard.dev",
+ },
+ },
+ "Cannot specify both identity provider and org name": {
+ Options: []Option{
+ WithOrgName("chainguard.dev"),
+ WithIdentityProvider("foo"),
+ },
+ WantErr: true,
+ },
+ "Cannot specify both client id and org name": {
+ Options: []Option{
+ WithOrgName("chainguard.dev"),
+ WithClientID("auth0"),
+ },
+ WantErr: true,
+ },
+ "No issuer defaults to prod issuer": {
+ Options: []Option{
+ WithIdentityProvider(id),
+ },
+ WantConfig: &config{
+ Issuer: defaultIssuer,
+ IDP: id,
+ },
+ },
+ "No idp ID or client ID set errors": {
+ Options: nil,
+ WantErr: true,
+ },
+ "IDP and ClientID both set errors": {
+ Options: []Option{
+ WithIdentityProvider(id),
+ WithClientID("client_id"),
+ },
+ WantErr: true,
+ },
+ "IDP and Auth0Connection both set errors": {
+ Options: []Option{
+ WithIdentityProvider(id),
+ WithAuth0Connection("github"),
+ },
+ WantErr: true,
+ },
+ }
+
+ for test, data := range tests {
+ t.Run(test, func(t *testing.T) {
+ gotConfig, err := newConfigFromOptions(data.Options...)
+ if err != nil && !data.WantErr {
+ t.Errorf("got unexpected error %#v", err)
+ return
+ } else if err == nil && data.WantErr {
+ t.Error("expected error and got none")
+ return
+ }
+
+ if diff := cmp.Diff(gotConfig, data.WantConfig); diff != "" {
+ t.Errorf("diff in expected config = %s", diff)
+ }
+ })
+ }
+}
diff --git a/auth/login/orgcheck.go b/auth/login/orgcheck.go
new file mode 100644
index 00000000..86f67286
--- /dev/null
+++ b/auth/login/orgcheck.go
@@ -0,0 +1,43 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "encoding/json"
+ "net/http"
+ "net/url"
+)
+
+func orgCheck(name string, issuer string) (verified bool, err error) {
+ var endpoint string
+ {
+ u, err := url.Parse(issuer)
+ if err != nil {
+ return false, err
+ }
+ u.Path = `/orgcheck`
+
+ query := make(url.Values, 1)
+ query.Add("name", name)
+ u.RawQuery = query.Encode()
+
+ endpoint = u.String()
+ }
+
+ //#nosec G107 HTTP request with variable input not a risk here. The result
+ // is from a public endpoint and only used as a convenience to fail early on
+ // misconfigured organizations
+ resp, err := http.Get(endpoint)
+ if err != nil {
+ return false, err
+ }
+
+ err = json.NewDecoder(resp.Body).Decode(&verified)
+ if err != nil {
+ return false, err
+ }
+ return verified, nil
+}
diff --git a/auth/login/orgcheck_test.go b/auth/login/orgcheck_test.go
new file mode 100644
index 00000000..e56e684a
--- /dev/null
+++ b/auth/login/orgcheck_test.go
@@ -0,0 +1,75 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "fmt"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+)
+
+func expectedBehavior(verifiedOrg string) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ if r.URL.Path != "/orgcheck" {
+ w.WriteHeader(http.StatusNotFound)
+ return
+ }
+
+ name := r.URL.Query().Get("name")
+ if name == "" {
+ w.WriteHeader(http.StatusBadRequest)
+ fmt.Fprintf(w, "name query param required")
+ return
+ }
+ fmt.Fprint(w, name == verifiedOrg)
+ }
+}
+
+func brokenIssuer(w http.ResponseWriter, _ *http.Request) {
+ w.WriteHeader(http.StatusInternalServerError)
+}
+
+func TestOrgCheck(t *testing.T) {
+ tests := map[string]struct {
+ org string
+ handler http.HandlerFunc
+ want bool
+ wantErr bool
+ }{
+ "verified": {
+ org: "example.com",
+ handler: expectedBehavior("example.com"),
+ want: true,
+ },
+ "not verified": {
+ org: "not.example.com",
+ handler: expectedBehavior("example.com"),
+ want: false,
+ },
+ "broken issuer should error": {
+ org: "example.com",
+ handler: brokenIssuer,
+ wantErr: true,
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ s := httptest.NewServer(test.handler)
+ defer s.Close()
+
+ got, err := orgCheck(test.org, s.URL)
+ if (err != nil) != test.wantErr {
+ t.Errorf("err == %s and wantErr = %v", err, test.wantErr)
+ return
+ }
+ if got != test.want {
+ t.Errorf("got = %v and want = %v", got, test.want)
+ }
+ })
+ }
+}
diff --git a/auth/login/server.go b/auth/login/server.go
new file mode 100644
index 00000000..d3c3e939
--- /dev/null
+++ b/auth/login/server.go
@@ -0,0 +1,110 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package login implements client login functionality shared between various
+// clients
+package login
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+)
+
+type server struct {
+ ctx context.Context
+
+ callbackURL string
+ rootURL string
+
+ token chan string
+
+ refreshToken string
+
+ l net.Listener
+}
+
+func newServer(ctx context.Context) (*server, error) {
+ s := new(server)
+
+ {
+ // NB: port 0 here means select a random port
+ listener, err := net.Listen("tcp", "127.0.0.1:0")
+ if err != nil {
+ return nil, err
+ }
+ port := listener.Addr().(*net.TCPAddr).Port
+
+ s.token = make(chan string, 1)
+
+ s.callbackURL = fmt.Sprintf("http://localhost:%d/callback?token=true", port)
+ s.rootURL = fmt.Sprintf("http://localhost:%d/", port)
+ s.l = listener
+ s.ctx = ctx
+ }
+
+ // nolint:all
+ go http.Serve(s.l, s)
+
+ return s, nil
+}
+
+func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case "/":
+ fmt.Fprint(w, HTMLAuthSuccessful)
+ close(s.token)
+ return
+
+ case "/callback":
+ token := r.URL.Query().Get("token")
+ if token == "" {
+ fmt.Fprint(w, "Account not found, registration required.")
+ close(s.token)
+ return
+ }
+ s.refreshToken = r.URL.Query().Get("refresh_token")
+ s.token <- token
+ // We redirect to `/` to print a "successful auth" message and strip
+ // the token out of the URI
+ http.Redirect(w, r, s.rootURL, http.StatusPermanentRedirect)
+
+ default:
+ http.NotFound(w, r)
+ }
+}
+
+func (s *server) URL() string {
+ return s.callbackURL
+}
+
+// Token blocks until a token has been received
+func (s *server) Token() (string, error) {
+ select {
+ case <-s.ctx.Done():
+ return "", s.ctx.Err()
+ case t, ok := <-s.token:
+ if !ok {
+ // Didn't receive token from redirect to callback
+ return "", errors.New("login failed")
+ }
+
+ // We've received a token, but need to block until the success page has been written to
+ // the browser
+ <-s.token
+ return t, nil
+ }
+}
+
+// RefreshToken is called after Token(), so we don't need any blocking here.
+func (s *server) RefreshToken() string {
+ return s.refreshToken
+}
+
+func (s *server) Close() error {
+ return s.l.Close()
+}
diff --git a/auth/login/server_test.go b/auth/login/server_test.go
new file mode 100644
index 00000000..20b8e454
--- /dev/null
+++ b/auth/login/server_test.go
@@ -0,0 +1,49 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "context"
+ "errors"
+ "net/http"
+ "strings"
+ "testing"
+ "time"
+)
+
+func TestServerTimeout(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)
+ defer cancel()
+ s, err := newServer(ctx)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ _, err = s.Token()
+ if !errors.Is(err, context.DeadlineExceeded) {
+ t.Errorf("expect timeout error getting token")
+ }
+}
+
+func TestServerHappyPath(t *testing.T) {
+ s, err := newServer(context.Background())
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ callback := strings.ReplaceAll(s.URL(), "token=true", "token=foo")
+ http.Get(callback)
+
+ token, err := s.Token()
+ if err != nil {
+ t.Errorf("expected no error, got %#v", err)
+ }
+ if token != "foo" {
+ t.Errorf("expected token == foo, but got token == %q", token)
+ }
+
+ s.Close()
+}
diff --git a/auth/oidc.go b/auth/oidc.go
new file mode 100644
index 00000000..29cc2872
--- /dev/null
+++ b/auth/oidc.go
@@ -0,0 +1,148 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package auth
+
+import (
+ "context"
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "os"
+ "strings"
+ "time"
+
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc/credentials"
+)
+
+// NewFromFile attempts to create a new credentials.PerRPCCredentials based on the provided file.
+// Returns nil if not found.
+func NewFromFile(ctx context.Context, path string, requireTransportSecurity bool) credentials.PerRPCCredentials {
+ if _, err := os.Stat(path); !os.IsNotExist(err) {
+ clog.FromContext(ctx).Infof("Using OIDC token from %s to authenticate requests.", path)
+ return &fileAuth{
+ file: path,
+ secure: requireTransportSecurity,
+ }
+ }
+ return nil
+}
+
+// NewFromToken attempts to create a new credentials.PerRPCCredentials based on provided OIDC token.
+func NewFromToken(_ context.Context, token string, requireTransportSecurity bool) credentials.PerRPCCredentials {
+ return &tokenAuth{
+ token: token,
+ secure: requireTransportSecurity,
+ }
+}
+
+// NewFromContext creates a new credentials.PerRPCCredentials based on a token stored in context.
+// This allows callers to provide a token for each RPC.
+func NewFromContext(_ context.Context, requireTransportSecurity bool) credentials.PerRPCCredentials {
+ return &contextAuth{
+ secure: requireTransportSecurity,
+ }
+}
+
+// NormalizeIssuer massages an issuer string into a canonical form, such as
+// attaching a scheme when certain "special" vendors omit them.
+func NormalizeIssuer(issuer string) string {
+ // Similar to go-oidc, allow Google accounts to be missing scheme:
+ // https://github.com/coreos/go-oidc/blob/26c5037/oidc/verify.go#L231
+ if issuer == "accounts.google.com" {
+ issuer = "https://accounts.google.com"
+ }
+ return issuer
+}
+
+type Actor struct {
+ Audience string `json:"aud"`
+ Issuer string `json:"iss"`
+ Subject string `json:"sub"`
+}
+
+func decodeToken(token string) ([]byte, error) {
+ parts := strings.Split(token, ".")
+ if len(parts) < 2 {
+ return nil, fmt.Errorf("oidc: malformed jwt, expected 3 parts got %d", len(parts))
+ }
+ raw, err := base64.RawURLEncoding.DecodeString(parts[1])
+ if err != nil {
+ return nil, fmt.Errorf("oidc: malformed jwt payload: %w", err)
+ }
+ return raw, nil
+}
+
+func ExtractActor(token string) (*Actor, error) {
+ raw, err := decodeToken(token)
+ if err != nil {
+ return nil, err
+ }
+
+ var payload struct {
+ Actor Actor `json:"act"`
+ }
+ if err := json.Unmarshal(raw, &payload); err != nil {
+ return nil, fmt.Errorf("oidc: failed to unmarshal actor: %w", err)
+ }
+ return &payload.Actor, nil
+}
+
+func ExtractEmail(token string) (email string, verified bool, err error) {
+ raw, err := decodeToken(token)
+ if err != nil {
+ return "", false, err
+ }
+
+ var payload struct {
+ Email string `json:"email"`
+ EmailVerified bool `json:"email_verified"`
+ }
+ if err := json.Unmarshal(raw, &payload); err != nil {
+ return "", false, fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
+ }
+
+ return payload.Email, payload.EmailVerified, nil
+}
+
+func ExtractIssuer(token string) (string, error) {
+ iss, _, err := ExtractIssuerAndSubject(token)
+ return iss, err
+}
+
+func ExtractIssuerAndSubject(token string) (string, string, error) {
+ raw, err := decodeToken(token)
+ if err != nil {
+ return "", "", err
+ }
+
+ var payload struct {
+ Issuer string `json:"iss"`
+ Subject string `json:"sub"`
+ }
+
+ if err := json.Unmarshal(raw, &payload); err != nil {
+ return "", "", fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
+ }
+ return NormalizeIssuer(payload.Issuer), payload.Subject, nil
+}
+
+func ExtractExpiry(token string) (time.Time, error) {
+ raw, err := decodeToken(token)
+ if err != nil {
+ return time.Time{}, err
+ }
+
+ var payload struct {
+ Expiry int64 `json:"exp"`
+ }
+
+ if err := json.Unmarshal(raw, &payload); err != nil {
+ return time.Time{}, fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
+ }
+
+ return time.Unix(payload.Expiry, 0), nil
+}
diff --git a/auth/token.go b/auth/token.go
new file mode 100644
index 00000000..b5593ea9
--- /dev/null
+++ b/auth/token.go
@@ -0,0 +1,31 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package auth
+
+import (
+ "context"
+
+ "google.golang.org/grpc/credentials"
+)
+
+type tokenAuth struct {
+ token string
+ secure bool
+}
+
+var _ credentials.PerRPCCredentials = (*tokenAuth)(nil)
+
+// GetRequestMetadata implements credentials.PerRPCCredentials
+func (ta *tokenAuth) GetRequestMetadata(_ context.Context, uri ...string) (map[string]string, error) { //nolint: revive
+ return map[string]string{
+ "Authorization": ta.token,
+ }, nil
+}
+
+// RequireTransportSecurity implements credentials.PerRPCCredentials
+func (ta *tokenAuth) RequireTransportSecurity() bool {
+ return ta.secure
+}
diff --git a/auth/token/token.go b/auth/token/token.go
new file mode 100644
index 00000000..485e6c99
--- /dev/null
+++ b/auth/token/token.go
@@ -0,0 +1,174 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package token
+
+import (
+ "errors"
+ "fmt"
+ "io/fs"
+ "os"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "time"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Kind string
+
+const (
+ KindAccess Kind = "oidc-token"
+ KindRefresh Kind = "refresh-token"
+)
+
+var (
+ AllKinds = []Kind{KindAccess, KindRefresh}
+)
+
+var (
+ parentDir = "chainguard"
+)
+
+// Save saves the given token to cache/audience
+func Save(token []byte, kind Kind, audience string) error {
+ path, err := Path(kind, audience)
+ if err != nil {
+ return err
+ }
+
+ if err := os.WriteFile(path, token, 0600); err != nil {
+ return fmt.Errorf("writing token file: %w", err)
+ }
+ return nil
+}
+
+// Load returns the token for the given audience if it exists,
+// or an error if it doesn't.
+func Load(kind Kind, audience string) ([]byte, error) {
+ path, err := Path(kind, audience)
+ if err != nil {
+ return nil, err
+ }
+
+ bs, err := os.ReadFile(path)
+ if err != nil {
+ return nil, fmt.Errorf("reading token file: %w", err)
+ }
+ return bs, nil
+}
+
+// Delete removes the token for the given audience, if it exists.
+// No error is returned if the token doesn't exist.
+func Delete(kind Kind, audience string) error {
+ path, err := Path(kind, audience)
+ if err != nil {
+ return err
+ }
+ err = os.Remove(path)
+ if err != nil && !errors.Is(err, fs.ErrNotExist) {
+ return fmt.Errorf("failed to remove token (%s): %w", path, err)
+ }
+ return nil
+}
+
+// DeleteAll removes all Chainguard tokens and empty audience directories.
+func DeleteAll() error {
+ base, err := cacheFilePath("")
+ if err != nil {
+ return fmt.Errorf("error locating Chainguard token dir: %w", err)
+ }
+ files, err := os.ReadDir(base)
+ if err != nil {
+ return fmt.Errorf("error reading Chainguard token dir: %w", err)
+ }
+ // Token directory is expected to be structured as group of audience-specific
+ // directories, with a single file containing the token
+ //
+ // $ tree ~/Library/Caches/chainguard
+ // /Users/foo/Library/Caches/chainguard
+ // ├── https:--console-api.enforce.dev
+ // │ └── oidc-token
+ // ├── https:--cgr.dev
+ // └── oidc-token
+ for _, file := range files {
+ if !file.IsDir() {
+ // Encountered a file in the directory. Skip.
+ continue
+ }
+ for _, kind := range AllKinds {
+ // Try to remove a token, ignore file not exist errors
+ tokenFile := filepath.Join(base, file.Name(), string(kind))
+ if err := os.Remove(tokenFile); err != nil && !errors.Is(err, fs.ErrNotExist) {
+ return fmt.Errorf("failed to remove %s: %w", tokenFile, err)
+ }
+ }
+ // Remove the (hopefully empty) audience directory.
+ // Ignore failures since other tools may have stored files in this cache.
+ dir := filepath.Join(base, file.Name())
+ _ = os.Remove(dir)
+ }
+ return nil
+}
+
+// Path is the filepath of the token for the given audience.
+func Path(kind Kind, audience string) (string, error) {
+ a := strings.ReplaceAll(audience, "/", "-")
+ // Windows does not allow : as a valid character for directory names.
+ // For backwards compatibility, keep : in directory names for non-Windows systems.
+ // Ref: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
+ if runtime.GOOS == "windows" {
+ a = strings.ReplaceAll(a, ":", "-")
+ }
+ fp := filepath.Join(a, string(kind))
+ return cacheFilePath(fp)
+}
+
+// RemainingLife returns the amount of time remaining before the token for
+// the given audience expires. Returns 0 for expired and non-existent tokens.
+func RemainingLife(kind Kind, audience string, less time.Duration) time.Duration {
+ tok, err := Load(kind, audience)
+ if err != nil {
+ // Not a big deal, life is zero.
+ return 0
+ }
+ expiry, err := auth.ExtractExpiry(string(tok))
+ if err != nil {
+ // Not a big deal, life is zero.
+ return 0
+ }
+ return subtractOrZero(expiry, less)
+}
+
+// For testing.
+var timeUntil = time.Until
+
+// Safe calculation for duration remaining from a given time, less the given duration.
+func subtractOrZero(expiry time.Time, less time.Duration) time.Duration {
+ life := timeUntil(expiry.Add(less * -1))
+ if life < 0 {
+ return 0
+ }
+ return life
+}
+
+func cacheFilePath(file string) (string, error) {
+ path, err := os.UserCacheDir()
+ if err != nil {
+ return "", fmt.Errorf("failed to get user cache dir: %w", err)
+ }
+
+ // Create the cache directories if needed
+ path = filepath.Join(path, parentDir, file)
+ _, err = os.Stat(filepath.Dir(path))
+ if errors.Is(err, os.ErrNotExist) {
+ err = nil // Clear err, we're dealing with it.
+ if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
+ return "", fmt.Errorf("failed to create %s: %w", path, err)
+ }
+ }
+ return path, err // err could be non-nil, if err != os.ErrNotExist
+}
diff --git a/auth/token/token_test.go b/auth/token/token_test.go
new file mode 100644
index 00000000..a263c9ea
--- /dev/null
+++ b/auth/token/token_test.go
@@ -0,0 +1,481 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package token
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/google/go-cmp/cmp"
+ "gopkg.in/square/go-jose.v2/jwt"
+
+ "chainguard.dev/go-oidctest/pkg/oidctest"
+)
+
+func testToken(t *testing.T, audience, subject string, issuedAt time.Time, validDur time.Duration) string {
+ t.Helper()
+
+ signer, iss := oidctest.NewIssuer(t)
+
+ // Create an OIDC token using this issuer's signer.
+ tok, err := jwt.Signed(signer).Claims(jwt.Claims{
+ Issuer: iss,
+ IssuedAt: jwt.NewNumericDate(issuedAt),
+ Expiry: jwt.NewNumericDate(issuedAt.Add(validDur)),
+ Subject: subject,
+ Audience: jwt.Audience{audience},
+ }).CompactSerialize()
+ if err != nil {
+ t.Fatalf("CompactSerialize() = %v", err)
+ }
+
+ return tok
+}
+
+func TestSave(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ tests := []struct {
+ name string
+ kind Kind
+ audience string
+ wantPath string
+ }{{
+ name: "sans audience",
+ kind: KindAccess,
+ audience: "", // Intentionally blank.
+ wantPath: filepath.Join(cacheDir, parentDir, string(KindAccess)),
+ }, {
+ name: "with audience (sans replacement)",
+ kind: KindAccess,
+ audience: "audience",
+ wantPath: filepath.Join(cacheDir, parentDir, "audience", string(KindAccess)),
+ }, {
+ name: "with audience (with replacement)",
+ kind: KindRefresh,
+ audience: "https://audience.unit.test",
+ wantPath: filepath.Join(cacheDir, parentDir, "https:--audience.unit.test", string(KindRefresh)),
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ // Save a token
+ tokenContents := []byte("mytoken")
+ if err := Save(tokenContents, test.kind, test.audience); err != nil {
+ t.Fatalf("Save() unexpected error=%v", err)
+ }
+
+ // Manually check the expected file location
+ _, err := os.Stat(test.wantPath)
+ if err != nil {
+ t.Fatalf("Expected token path returned error: %v", err)
+ }
+
+ gotContents, err := os.ReadFile(test.wantPath)
+ if err != nil {
+ t.Fatalf("Unexpected error reading token filepath=%s, err=%v", test.wantPath, err)
+ }
+
+ if diff := cmp.Diff(tokenContents, gotContents); diff != "" {
+ t.Errorf("Reading %s returned unexpected results (-want, +got): %s", test.wantPath, diff)
+ }
+ })
+ }
+}
+
+func TestLoad(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ tests := []struct {
+ name string
+ kind Kind
+ audience string
+ }{{
+ name: "sans audience",
+ kind: KindAccess,
+ audience: "", // Intentionally blank.
+ }, {
+ name: "with audience (sans replacement)",
+ kind: KindAccess,
+ audience: "audience",
+ }, {
+ name: "with audience (with replacement)",
+ kind: KindRefresh,
+ audience: "https://audience.unit.test",
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ // Manually save a token
+ tokenContents := []byte("mytoken")
+ mutatedAud := strings.ReplaceAll(test.audience, "/", "-")
+ path := filepath.Join(cacheDir, parentDir, mutatedAud)
+ if err := os.MkdirAll(path, 0777); err != nil {
+ t.Fatalf("Unexpected error creating temp dir: %v", err)
+ }
+ if err := os.WriteFile(filepath.Join(path, string(test.kind)), tokenContents, 0600); err != nil {
+ t.Fatalf("Unexpected error writing test token: %v", err)
+ }
+
+ // Load the token, check its contents
+ got, err := Load(test.kind, test.audience)
+ if err != nil {
+ t.Fatalf("Load() unexpected error=%v", err)
+ }
+ if string(tokenContents) != string(got) {
+ t.Errorf("Load() return mismatch, want=%s, got=%s", tokenContents, got)
+ }
+ })
+ }
+}
+
+func TestDelete(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ tests := []struct {
+ name string
+ audience string
+ kind Kind
+ exists bool
+ wantErr bool
+ }{{
+ name: "no audience ",
+ audience: "", // Intentionally blank.
+ kind: KindRefresh,
+ wantErr: false,
+ }, {
+ name: "token doesn't exist",
+ audience: "audience",
+ exists: false,
+ kind: KindAccess,
+ wantErr: false,
+ }, {
+ name: "token does exist",
+ audience: "audience",
+ exists: true,
+ kind: KindAccess,
+ wantErr: false,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ // Manually save a token if it should exist
+ if test.exists {
+ tokenContents := []byte("mytoken")
+ path := filepath.Join(cacheDir, parentDir, test.audience)
+ if err := os.MkdirAll(path, 0777); err != nil {
+ t.Fatalf("Unexpected error creating temp dir: %v", err)
+ }
+ if err := os.WriteFile(filepath.Join(path, string(test.kind)), tokenContents, 0600); err != nil {
+ t.Fatalf("Unexpected error writing test token: %v", err)
+ }
+ }
+
+ // Attempt to delete the token.
+ err := Delete(test.kind, test.audience)
+ if (err != nil) != test.wantErr {
+ t.Fatalf("Delete() error return mismatch, want=%t got=%v", test.wantErr, err)
+ }
+ })
+ }
+}
+
+func TestDeleteAll(t *testing.T) {
+ tests := []struct {
+ name string
+ auds []string // Create sub-dirs for each of these in cacheDir
+ audsWithTokens []string // Dirs from above that should also have a token (subset of auds)
+ extraFiles []string // Any extra files outside of audience dirs to include (in root of cacheDir)
+ wantErr bool
+ }{{
+ name: "no tokens, no extra files/dirs",
+ auds: nil,
+ audsWithTokens: nil,
+ extraFiles: nil,
+ wantErr: false,
+ }, {
+ name: "all aud dirs have token, no extra files",
+ auds: []string{"audience1", "audience2"},
+ audsWithTokens: []string{"audience1", "audience2"},
+ extraFiles: nil,
+ wantErr: false,
+ }, {
+ name: "some empty aud dirs, no extra files",
+ auds: []string{"audience1", "audience2", "audience3", "audience4"},
+ audsWithTokens: []string{"audience1", "audience2"},
+ extraFiles: nil,
+ wantErr: false,
+ }, {
+ name: "all empty aud dirs, no extra files",
+ auds: []string{"audience1", "audience2", "audience3", "audience4"},
+ audsWithTokens: []string{},
+ extraFiles: nil,
+ wantErr: false,
+ }, {
+ name: "all aud dirs have token, extra files in root",
+ auds: []string{"audience1", "audience2"},
+ audsWithTokens: []string{"audience1", "audience2"},
+ extraFiles: []string{"extra1", "extra2"},
+ wantErr: false,
+ }, {
+ name: "all aud dirs have token, extra files in dirs",
+ auds: []string{"audience1", "audience2"},
+ audsWithTokens: []string{"audience1", "audience2"},
+ extraFiles: []string{filepath.Join("audience1", "extra1"), filepath.Join("some-dir", "extra2")},
+ wantErr: false,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ // Make sure parent cache directory exists
+ t.Setenv("HOME", t.TempDir())
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ t.Fatal(err)
+ }
+ cacheDir = filepath.Join(cacheDir, parentDir)
+
+ if err := os.MkdirAll(cacheDir, os.ModePerm); err != nil {
+ t.Fatalf("failed to create parent dir %s: %s", cacheDir, err.Error())
+ }
+ // Create audience directories
+ for _, aud := range test.auds {
+ dir := filepath.Join(cacheDir, aud)
+ if err := os.MkdirAll(dir, os.ModePerm); err != nil {
+ t.Fatalf("failed to create dir %s: %s", dir, err.Error())
+ }
+ }
+ // Populate "token" files
+ for _, aud := range test.audsWithTokens {
+ for _, kind := range AllKinds {
+ tok := filepath.Join(cacheDir, aud, string(kind))
+ if _, err := os.Create(tok); err != nil {
+ t.Fatalf("failed to create fake token %s: %s", tok, err.Error())
+ }
+ }
+ }
+ // Create extra files
+ for _, extra := range test.extraFiles {
+ p := filepath.Join(cacheDir, extra)
+ if err := os.MkdirAll(filepath.Dir(p), os.ModePerm); err != nil {
+ t.Fatalf("failed to create dir %s: %s", filepath.Dir(p), err.Error())
+ }
+ if _, err := os.Create(p); err != nil {
+ t.Fatalf("failed to create extra file %s: %s", p, err.Error())
+ }
+ }
+
+ // Then burn it to the ground.
+ err = DeleteAll()
+
+ // Sift through the ashes.
+ if (err != nil) != test.wantErr {
+ t.Errorf("DeleteAll() error return mismatch, want=%t, got=%v", test.wantErr, err)
+ }
+ files, err := os.ReadDir(cacheDir)
+ if err != nil {
+ t.Fatalf("failed to list files in temp cache dir: %v", err)
+ }
+ // Only expect test.extraFiles to remain, all other files/dirs should have been removed.
+ // TODO: make this more robust and count subfiles within dirs in `files`
+ // This will currently fail to catch situation where one dir has >1 extra file
+ if len(files) != len(test.extraFiles) {
+ t.Errorf("Remaining files mismatch, want=%d, got=%d", len(test.extraFiles), len(files))
+ }
+ })
+ }
+}
+
+func TestSaveLoadToken(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+
+ tests := []struct {
+ description string
+ audience string
+ }{
+ {
+ description: "default audience",
+ audience: "http://api.api-system.svc",
+ }, {
+ description: "default audience with audience",
+ audience: "http://api.api-system.svc",
+ }, {
+ description: "custom audience",
+ audience: "https://abc-sigstore.enforce.dev",
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.description, func(t *testing.T) {
+ for _, kind := range AllKinds {
+ tokenContents := []byte("mytoken")
+ if err := Save(tokenContents, kind, test.audience); err != nil {
+ t.Fatal(err)
+ }
+ contents, err := Load(kind, test.audience)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(contents) != string(tokenContents) {
+ t.Fatalf("expected %s got %s", string(tokenContents), string(contents))
+ }
+ }
+ })
+ }
+}
+
+func TestRemainingLife(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+
+ now := time.Unix(0, 0)
+ timeUntil = func(t time.Time) time.Duration {
+ return t.Sub(now)
+ }
+
+ type ts struct {
+ audience string
+ subject string
+ duration time.Duration
+ }
+
+ tests := []struct {
+ name string
+ token ts
+ kind Kind
+ audience string
+ less time.Duration
+ want time.Duration
+ }{{
+ name: "exists, 0 less, 30m remain",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindAccess,
+ audience: "audience",
+ less: 0,
+ want: 30 * time.Minute,
+ }, {
+ name: "exists, less 10m, 20m remain",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindRefresh,
+ audience: "audience",
+ less: 10 * time.Minute,
+ want: 20 * time.Minute,
+ }, {
+ name: "exists less 30m, 0s remain",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindAccess,
+ audience: "audience",
+ less: 30 * time.Minute,
+ want: 0,
+ }, {
+ name: "exists less 40m, 0s remain",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindAccess,
+ audience: "audience",
+ less: 40 * time.Minute,
+ want: 0,
+ }, {
+ name: "doesn't exist, 0s returned",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindAccess,
+ audience: "different",
+ less: 0,
+ want: 0,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ tok := testToken(t, test.token.audience, test.token.subject, now, test.token.duration)
+ if err := Save([]byte(tok), test.kind, test.token.audience); err != nil {
+ t.Fatalf("Save() unexpected error=%v", err)
+ }
+
+ got := RemainingLife(test.kind, test.audience, test.less)
+
+ if got != test.want {
+ t.Fatalf("RemainingLife() mismatch, want=%v, got=%v", test.want, got)
+ }
+ })
+ }
+}
+
+func TestPath(t *testing.T) {
+ t.Setenv("HOME", t.TempDir())
+
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ tests := map[string]struct {
+ kind Kind
+ audience string
+ expectedPath string
+ }{
+ "no audience": {
+ audience: "",
+ kind: KindAccess,
+ expectedPath: filepath.Join(cacheDir, parentDir, string(KindAccess)),
+ },
+ "audience sans replacement": {
+ audience: "console.example.com",
+ kind: KindAccess,
+ expectedPath: filepath.Join(cacheDir, parentDir, "console.example.com", string(KindAccess)),
+ },
+ "audience with replacement": {
+ audience: "https://console.example.com",
+ kind: KindRefresh,
+ expectedPath: filepath.Join(cacheDir, parentDir, "https:--console.example.com", string(KindRefresh)),
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ got, err := Path(test.kind, test.audience)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if diff := cmp.Diff(test.expectedPath, got); diff != "" {
+ t.Fatal("Path() mismatch (-want, +got):", diff)
+ }
+ })
+ }
+}
diff --git a/civil/civil.go b/civil/civil.go
new file mode 100644
index 00000000..936e99ae
--- /dev/null
+++ b/civil/civil.go
@@ -0,0 +1,332 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// This is a fork of the cloud.google.com/go package of the same name, which
+// carries the patch from: https://github.com/googleapis/google-cloud-go/pull/6410
+
+// Copyright 2016 Google LLC
+//
+// 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.
+
+// Package civil implements types for civil time, a time-zone-independent
+// representation of time that follows the rules of the proleptic
+// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second
+// minutes.
+//
+// Because they lack location information, these types do not represent unique
+// moments or intervals of time. Use time.Time for that purpose.
+package civil
+
+import (
+ "fmt"
+ "time"
+)
+
+// A Date represents a date (year, month, day).
+//
+// This type does not include location information, and therefore does not
+// describe a unique 24-hour timespan.
+type Date struct {
+ Year int // Year (e.g., 2014).
+ Month time.Month // Month of the year (January = 1, ...).
+ Day int // Day of the month, starting at 1.
+}
+
+// DateOf returns the Date in which a time occurs in that time's location.
+func DateOf(t time.Time) Date {
+ var d Date
+ d.Year, d.Month, d.Day = t.Date()
+ return d
+}
+
+// ParseDate parses a string in RFC3339 full-date format and returns the date value it represents.
+func ParseDate(s string) (Date, error) {
+ t, err := time.Parse("2006-01-02", s)
+ if err != nil {
+ return Date{}, err
+ }
+ return DateOf(t), nil
+}
+
+// String returns the date in RFC3339 full-date format.
+func (d Date) String() string {
+ return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day)
+}
+
+// IsValid reports whether the date is valid.
+func (d Date) IsValid() bool {
+ return DateOf(d.In(time.UTC)) == d
+}
+
+// In returns the time corresponding to time 00:00:00 of the date in the location.
+//
+// In is always consistent with time.Date, even when time.Date returns a time
+// on a different day. For example, if loc is America/Indiana/Vincennes, then both
+//
+// time.Date(1955, time.May, 1, 0, 0, 0, 0, loc)
+//
+// and
+//
+// civil.Date{Year: 1955, Month: time.May, Day: 1}.In(loc)
+//
+// return 23:00:00 on April 30, 1955.
+//
+// In panics if loc is nil.
+func (d Date) In(loc *time.Location) time.Time {
+ return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)
+}
+
+// AddDays returns the date that is n days in the future.
+// n can also be negative to go into the past.
+func (d Date) AddDays(n int) Date {
+ return DateOf(d.In(time.UTC).AddDate(0, 0, n))
+}
+
+// DaysSince returns the signed number of days between the date and s, not including the end day.
+// This is the inverse operation to AddDays.
+func (d Date) DaysSince(s Date) (days int) {
+ // We convert to Unix time so we do not have to worry about leap seconds:
+ // Unix time increases by exactly 86400 seconds per day.
+ deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()
+ return int(deltaUnix / 86400)
+}
+
+// Before reports whether d occurs before d2.
+func (d Date) Before(d2 Date) bool {
+ if d.Year != d2.Year {
+ return d.Year < d2.Year
+ }
+ if d.Month != d2.Month {
+ return d.Month < d2.Month
+ }
+ return d.Day < d2.Day
+}
+
+// After reports whether d occurs after d2.
+func (d Date) After(d2 Date) bool {
+ return d2.Before(d)
+}
+
+// IsZero reports whether date fields are set to their default value.
+func (d Date) IsZero() bool {
+ return (d.Year == 0) && (int(d.Month) == 0) && (d.Day == 0)
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of d.String().
+func (d Date) MarshalText() ([]byte, error) {
+ return []byte(d.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The date is expected to be a string in a format accepted by ParseDate.
+func (d *Date) UnmarshalText(data []byte) error {
+ var err error
+ *d, err = ParseDate(string(data))
+ return err
+}
+
+// A Time represents a time with nanosecond precision.
+//
+// This type does not include location information, and therefore does not
+// describe a unique moment in time.
+//
+// This type exists to represent the TIME type in storage-based APIs like BigQuery.
+// Most operations on Times are unlikely to be meaningful. Prefer the DateTime type.
+type Time struct {
+ Hour int // The hour of the day in 24-hour format; range [0-23]
+ Minute int // The minute of the hour; range [0-59]
+ Second int // The second of the minute; range [0-59]
+ Nanosecond int // The nanosecond of the second; range [0-999999999]
+}
+
+// TimeOf returns the Time representing the time of day in which a time occurs
+// in that time's location. It ignores the date.
+func TimeOf(t time.Time) Time {
+ var tm Time
+ tm.Hour, tm.Minute, tm.Second = t.Clock()
+ tm.Nanosecond = t.Nanosecond()
+ return tm
+}
+
+// ParseTime parses a string and returns the time value it represents.
+// ParseTime accepts an extended form of the RFC3339 partial-time format. After
+// the HH:MM:SS part of the string, an optional fractional part may appear,
+// consisting of a decimal point followed by one to nine decimal digits.
+// (RFC3339 admits only one digit after the decimal point).
+func ParseTime(s string) (Time, error) {
+ t, err := time.Parse("15:04:05.999999999", s)
+ if err != nil {
+ return Time{}, err
+ }
+ return TimeOf(t), nil
+}
+
+// String returns the date in the format described in ParseTime. If Nanoseconds
+// is zero, no fractional part will be generated. Otherwise, the result will
+// end with a fractional part consisting of a decimal point and six digits.
+// The fractional part is limited to six digits because that is the precision
+// limit for BigQuery DATETIME columns.
+func (t Time) String() string {
+ s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second)
+ if t.Nanosecond == 0 {
+ return s
+ }
+ return s + fmt.Sprintf(".%06d", t.Nanosecond/1000)
+}
+
+// IsValid reports whether the time is valid.
+func (t Time) IsValid() bool {
+ // Construct a non-zero time.
+ tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)
+ return TimeOf(tm) == t
+}
+
+// IsZero reports whether time fields are set to their default value.
+func (t Time) IsZero() bool {
+ return (t.Hour == 0) && (t.Minute == 0) && (t.Second == 0) && (t.Nanosecond == 0)
+}
+
+// Before reports whether t occurs before t2.
+func (t Time) Before(t2 Time) bool {
+ if t.Hour != t2.Hour {
+ return t.Hour < t2.Hour
+ }
+ if t.Minute != t2.Minute {
+ return t.Minute < t2.Minute
+ }
+ if t.Second != t2.Second {
+ return t.Second < t2.Second
+ }
+
+ return t.Nanosecond < t2.Nanosecond
+}
+
+// After reports whether t occurs after t2.
+func (t Time) After(t2 Time) bool {
+ return t2.Before(t)
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of t.String().
+func (t Time) MarshalText() ([]byte, error) {
+ return []byte(t.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The time is expected to be a string in a format accepted by ParseTime.
+func (t *Time) UnmarshalText(data []byte) error {
+ var err error
+ *t, err = ParseTime(string(data))
+ return err
+}
+
+// A DateTime represents a date and time.
+//
+// This type does not include location information, and therefore does not
+// describe a unique moment in time.
+type DateTime struct {
+ Date Date
+ Time Time
+}
+
+// Note: We deliberately do not embed Date into DateTime, to avoid promoting AddDays and Sub.
+
+// DateTimeOf returns the DateTime in which a time occurs in that time's location.
+func DateTimeOf(t time.Time) DateTime {
+ return DateTime{
+ Date: DateOf(t),
+ Time: TimeOf(t),
+ }
+}
+
+// ParseDateTime parses a string and returns the DateTime it represents.
+// ParseDateTime accepts a variant of the RFC3339 date-time format that omits
+// the time offset but includes an optional fractional time, as described in
+// ParseTime. Informally, the accepted format is
+//
+// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]
+//
+// where the 'T' may be a lower-case 't'.
+func ParseDateTime(s string) (DateTime, error) {
+ t, err := time.Parse("2006-01-02T15:04:05.999999999", s)
+ if err != nil {
+ t, err = time.Parse("2006-01-02t15:04:05.999999999", s)
+ if err != nil {
+ return DateTime{}, err
+ }
+ }
+ return DateTimeOf(t), nil
+}
+
+// String returns the date in the format described in ParseDate.
+func (dt DateTime) String() string {
+ return dt.Date.String() + "T" + dt.Time.String()
+}
+
+// IsValid reports whether the datetime is valid.
+func (dt DateTime) IsValid() bool {
+ return dt.Date.IsValid() && dt.Time.IsValid()
+}
+
+// In returns the time corresponding to the DateTime in the given location.
+//
+// If the time is missing or ambigous at the location, In returns the same
+// result as time.Date. For example, if loc is America/Indiana/Vincennes, then
+// both
+//
+// time.Date(1955, time.May, 1, 0, 30, 0, 0, loc)
+//
+// and
+//
+// civil.DateTime{
+// civil.Date{Year: 1955, Month: time.May, Day: 1}},
+// civil.Time{Minute: 30}}.In(loc)
+//
+// return 23:30:00 on April 30, 1955.
+//
+// In panics if loc is nil.
+func (dt DateTime) In(loc *time.Location) time.Time {
+ return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)
+}
+
+// Before reports whether dt occurs before dt2.
+func (dt DateTime) Before(dt2 DateTime) bool {
+ return dt.In(time.UTC).Before(dt2.In(time.UTC))
+}
+
+// After reports whether dt occurs after dt2.
+func (dt DateTime) After(dt2 DateTime) bool {
+ return dt2.Before(dt)
+}
+
+// IsZero reports whether datetime fields are set to their default value.
+func (dt DateTime) IsZero() bool {
+ return dt.Date.IsZero() && dt.Time.IsZero()
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of dt.String().
+func (dt DateTime) MarshalText() ([]byte, error) {
+ return []byte(dt.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The datetime is expected to be a string in a format accepted by ParseDateTime
+func (dt *DateTime) UnmarshalText(data []byte) error {
+ var err error
+ *dt, err = ParseDateTime(string(data))
+ return err
+}
diff --git a/civil/civil_test.go b/civil/civil_test.go
new file mode 100644
index 00000000..d1de7c73
--- /dev/null
+++ b/civil/civil_test.go
@@ -0,0 +1,547 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// This is a fork of the cloud.google.com/go package of the same name, which
+// carries the patch from: https://github.com/googleapis/google-cloud-go/pull/6410
+
+// Copyright 2016 Google LLC
+//
+// 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.
+
+package civil
+
+import (
+ "encoding/json"
+ "testing"
+ "time"
+
+ "github.com/google/go-cmp/cmp"
+)
+
+func TestDates(t *testing.T) {
+ for _, test := range []struct {
+ date Date
+ loc *time.Location
+ wantStr string
+ wantTime time.Time
+ }{
+ {
+ date: Date{2014, 7, 29},
+ loc: time.Local,
+ wantStr: "2014-07-29",
+ wantTime: time.Date(2014, time.July, 29, 0, 0, 0, 0, time.Local),
+ },
+ {
+ date: DateOf(time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local)),
+ loc: time.UTC,
+ wantStr: "2014-08-20",
+ wantTime: time.Date(2014, 8, 20, 0, 0, 0, 0, time.UTC),
+ },
+ {
+ date: DateOf(time.Date(999, time.January, 26, 0, 0, 0, 0, time.Local)),
+ loc: time.UTC,
+ wantStr: "0999-01-26",
+ wantTime: time.Date(999, 1, 26, 0, 0, 0, 0, time.UTC),
+ },
+ } {
+ if got := test.date.String(); got != test.wantStr {
+ t.Errorf("%#v.String() = %q, want %q", test.date, got, test.wantStr)
+ }
+ if got := test.date.In(test.loc); !got.Equal(test.wantTime) {
+ t.Errorf("%#v.In(%v) = %v, want %v", test.date, test.loc, got, test.wantTime)
+ }
+ }
+}
+
+func TestDateIsValid(t *testing.T) {
+ for _, test := range []struct {
+ date Date
+ want bool
+ }{
+ {Date{2014, 7, 29}, true},
+ {Date{2000, 2, 29}, true},
+ {Date{10000, 12, 31}, true},
+ {Date{1, 1, 1}, true},
+ {Date{0, 1, 1}, true}, // year zero is OK
+ {Date{-1, 1, 1}, true}, // negative year is OK
+ {Date{1, 0, 1}, false},
+ {Date{1, 1, 0}, false},
+ {Date{2016, 1, 32}, false},
+ {Date{2016, 13, 1}, false},
+ {Date{1, -1, 1}, false},
+ {Date{1, 1, -1}, false},
+ } {
+ got := test.date.IsValid()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.date, got, test.want)
+ }
+ }
+}
+
+func TestParseDate(t *testing.T) {
+ for _, test := range []struct {
+ str string
+ want Date // if empty, expect an error
+ }{
+ {"2016-01-02", Date{2016, 1, 2}},
+ {"2016-12-31", Date{2016, 12, 31}},
+ {"0003-02-04", Date{3, 2, 4}},
+ {"999-01-26", Date{}},
+ {"", Date{}},
+ {"2016-01-02x", Date{}},
+ } {
+ got, err := ParseDate(test.str)
+ if got != test.want {
+ t.Errorf("ParseDate(%q) = %+v, want %+v", test.str, got, test.want)
+ }
+ if err != nil && test.want != (Date{}) {
+ t.Errorf("Unexpected error %v from ParseDate(%q)", err, test.str)
+ }
+ }
+}
+
+func TestDateArithmetic(t *testing.T) {
+ for _, test := range []struct {
+ desc string
+ start Date
+ end Date
+ days int
+ }{
+ {
+ desc: "zero days noop",
+ start: Date{2014, 5, 9},
+ end: Date{2014, 5, 9},
+ days: 0,
+ },
+ {
+ desc: "crossing a year boundary",
+ start: Date{2014, 12, 31},
+ end: Date{2015, 1, 1},
+ days: 1,
+ },
+ {
+ desc: "negative number of days",
+ start: Date{2015, 1, 1},
+ end: Date{2014, 12, 31},
+ days: -1,
+ },
+ {
+ desc: "full leap year",
+ start: Date{2004, 1, 1},
+ end: Date{2005, 1, 1},
+ days: 366,
+ },
+ {
+ desc: "full non-leap year",
+ start: Date{2001, 1, 1},
+ end: Date{2002, 1, 1},
+ days: 365,
+ },
+ {
+ desc: "crossing a leap second",
+ start: Date{1972, 6, 30},
+ end: Date{1972, 7, 1},
+ days: 1,
+ },
+ {
+ desc: "dates before the unix epoch",
+ start: Date{101, 1, 1},
+ end: Date{102, 1, 1},
+ days: 365,
+ },
+ } {
+ if got := test.start.AddDays(test.days); got != test.end {
+ t.Errorf("[%s] %#v.AddDays(%v) = %#v, want %#v", test.desc, test.start, test.days, got, test.end)
+ }
+ if got := test.end.DaysSince(test.start); got != test.days {
+ t.Errorf("[%s] %#v.Sub(%#v) = %v, want %v", test.desc, test.end, test.start, got, test.days)
+ }
+ }
+}
+
+func TestDateBefore(t *testing.T) {
+ for _, test := range []struct {
+ d1, d2 Date
+ want bool
+ }{
+ {Date{2016, 12, 31}, Date{2017, 1, 1}, true},
+ {Date{2016, 1, 1}, Date{2016, 1, 1}, false},
+ {Date{2016, 12, 30}, Date{2016, 12, 31}, true},
+ } {
+ if got := test.d1.Before(test.d2); got != test.want {
+ t.Errorf("%v.Before(%v): got %t, want %t", test.d1, test.d2, got, test.want)
+ }
+ }
+}
+
+func TestDateAfter(t *testing.T) {
+ for _, test := range []struct {
+ d1, d2 Date
+ want bool
+ }{
+ {Date{2016, 12, 31}, Date{2017, 1, 1}, false},
+ {Date{2016, 1, 1}, Date{2016, 1, 1}, false},
+ {Date{2016, 12, 30}, Date{2016, 12, 31}, false},
+ } {
+ if got := test.d1.After(test.d2); got != test.want {
+ t.Errorf("%v.After(%v): got %t, want %t", test.d1, test.d2, got, test.want)
+ }
+ }
+}
+
+func TestDateIsZero(t *testing.T) {
+ for _, test := range []struct {
+ date Date
+ want bool
+ }{
+ {Date{2000, 2, 29}, false},
+ {Date{10000, 12, 31}, false},
+ {Date{-1, 0, 0}, false},
+ {Date{0, 0, 0}, true},
+ {Date{}, true},
+ } {
+ got := test.date.IsZero()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.date, got, test.want)
+ }
+ }
+}
+
+func TestTimeToString(t *testing.T) {
+ for _, test := range []struct {
+ str string
+ time Time
+ roundTrip bool // ParseTime(str).String() == str?
+ }{
+ {"13:26:33", Time{13, 26, 33, 0}, true},
+ {"01:02:03.000023", Time{1, 2, 3, 23000}, true},
+ {"00:00:00.000001", Time{0, 0, 0, 1000}, true},
+ {"13:26:03.1", Time{13, 26, 3, 100000000}, false},
+ {"13:26:33.0000003", Time{13, 26, 33, 300}, false},
+ } {
+ t.Run(test.str, func(t *testing.T) {
+ gotTime, err := ParseTime(test.str)
+ if err != nil {
+ t.Errorf("ParseTime(%q): got error: %v", test.str, err)
+ return
+ }
+ if gotTime != test.time {
+ t.Errorf("ParseTime(%q) = %+v, want %+v", test.str, gotTime, test.time)
+ }
+ if test.roundTrip {
+ gotStr := test.time.String()
+ if gotStr != test.str {
+ t.Errorf("%#v.String() = %q, want %q", test.time, gotStr, test.str)
+ }
+ }
+ })
+ }
+}
+
+func TestTimeOf(t *testing.T) {
+ for _, test := range []struct {
+ time time.Time
+ want Time
+ }{
+ {time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local), Time{15, 8, 43, 1}},
+ {time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC), Time{0, 0, 0, 0}},
+ } {
+ if got := TimeOf(test.time); got != test.want {
+ t.Errorf("TimeOf(%v) = %+v, want %+v", test.time, got, test.want)
+ }
+ }
+}
+
+func TestTimeIsValid(t *testing.T) {
+ for _, test := range []struct {
+ time Time
+ want bool
+ }{
+ {Time{0, 0, 0, 0}, true},
+ {Time{23, 0, 0, 0}, true},
+ {Time{23, 59, 59, 999999999}, true},
+ {Time{24, 59, 59, 999999999}, false},
+ {Time{23, 60, 59, 999999999}, false},
+ {Time{23, 59, 60, 999999999}, false},
+ {Time{23, 59, 59, 1000000000}, false},
+ {Time{-1, 0, 0, 0}, false},
+ {Time{0, -1, 0, 0}, false},
+ {Time{0, 0, -1, 0}, false},
+ {Time{0, 0, 0, -1}, false},
+ } {
+ got := test.time.IsValid()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.time, got, test.want)
+ }
+ }
+}
+
+func TestTimeIsZero(t *testing.T) {
+ for _, test := range []struct {
+ time Time
+ want bool
+ }{
+ {Time{0, 0, 0, 0}, true},
+ {Time{}, true},
+ {Time{0, 0, 0, 1}, false},
+ {Time{-1, 0, 0, 0}, false},
+ {Time{0, -1, 0, 0}, false},
+ } {
+ got := test.time.IsZero()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.time, got, test.want)
+ }
+ }
+}
+
+func TestTimeBefore(t *testing.T) {
+ for _, test := range []struct {
+ t1, t2 Time
+ want bool
+ }{
+ {Time{12, 0, 0, 0}, Time{14, 0, 0, 0}, true},
+ {Time{12, 20, 0, 0}, Time{12, 30, 0, 0}, true},
+ {Time{12, 20, 10, 0}, Time{12, 20, 20, 0}, true},
+ {Time{12, 20, 10, 5}, Time{12, 20, 10, 10}, true},
+ {Time{12, 20, 10, 5}, Time{12, 20, 10, 5}, false},
+ } {
+ if got := test.t1.Before(test.t2); got != test.want {
+ t.Errorf("%v.Before(%v): got %t, want %t", test.t1, test.t2, got, test.want)
+ }
+ }
+}
+
+func TestTimeAfter(t *testing.T) {
+ for _, test := range []struct {
+ t1, t2 Time
+ want bool
+ }{
+ {Time{12, 0, 0, 0}, Time{14, 0, 0, 0}, false},
+ {Time{12, 20, 0, 0}, Time{12, 30, 0, 0}, false},
+ {Time{12, 20, 10, 0}, Time{12, 20, 20, 0}, false},
+ {Time{12, 20, 10, 5}, Time{12, 20, 10, 10}, false},
+ {Time{12, 20, 10, 5}, Time{12, 20, 10, 5}, false},
+ } {
+ if got := test.t1.After(test.t2); got != test.want {
+ t.Errorf("%v.After(%v): got %t, want %t", test.t1, test.t2, got, test.want)
+ }
+ }
+}
+
+func TestDateTimeToString(t *testing.T) {
+ for _, test := range []struct {
+ str string
+ dateTime DateTime
+ roundTrip bool // ParseDateTime(str).String() == str?
+ }{
+ {"2016-03-22T13:26:33", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 0}}, true},
+ {"2016-03-22T13:26:33.000000600", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 600}}, false},
+ {"2016-03-22T13:26:33.000006", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 6000}}, true},
+ {"2016-03-22t13:26:33", DateTime{Date{2016, 03, 22}, Time{13, 26, 33, 0}}, false},
+ } {
+ t.Run(test.str, func(t *testing.T) {
+ gotDateTime, err := ParseDateTime(test.str)
+ if err != nil {
+ t.Errorf("ParseDateTime(%q): got error: %v", test.str, err)
+ return
+ }
+ if gotDateTime != test.dateTime {
+ t.Errorf("ParseDateTime(%q) = %+v, want %+v", test.str, gotDateTime, test.dateTime)
+ }
+ if test.roundTrip {
+ gotStr := test.dateTime.String()
+ if gotStr != test.str {
+ t.Errorf("%#v.String() = %q, want %q", test.dateTime, gotStr, test.str)
+ }
+ }
+ })
+ }
+}
+
+func TestParseDateTimeErrors(t *testing.T) {
+ for _, str := range []string{
+ "",
+ "2016-03-22", // just a date
+ "13:26:33", // just a time
+ "2016-03-22 13:26:33", // wrong separating character
+ "2016-03-22T13:26:33x", // extra at end
+ } {
+ if _, err := ParseDateTime(str); err == nil {
+ t.Errorf("ParseDateTime(%q) succeeded, want error", str)
+ }
+ }
+}
+
+func TestDateTimeOf(t *testing.T) {
+ for _, test := range []struct {
+ time time.Time
+ want DateTime
+ }{
+ {time.Date(2014, 8, 20, 15, 8, 43, 1, time.Local),
+ DateTime{Date{2014, 8, 20}, Time{15, 8, 43, 1}}},
+ {time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC),
+ DateTime{Date{1, 1, 1}, Time{0, 0, 0, 0}}},
+ } {
+ if got := DateTimeOf(test.time); got != test.want {
+ t.Errorf("DateTimeOf(%v) = %+v, want %+v", test.time, got, test.want)
+ }
+ }
+}
+
+func TestDateTimeIsValid(t *testing.T) {
+ // No need to be exhaustive here; it's just Date.IsValid && Time.IsValid.
+ for _, test := range []struct {
+ dt DateTime
+ want bool
+ }{
+ {DateTime{Date{2016, 3, 20}, Time{0, 0, 0, 0}}, true},
+ {DateTime{Date{2016, -3, 20}, Time{0, 0, 0, 0}}, false},
+ {DateTime{Date{2016, 3, 20}, Time{24, 0, 0, 0}}, false},
+ } {
+ got := test.dt.IsValid()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.dt, got, test.want)
+ }
+ }
+}
+
+func TestDateTimeIn(t *testing.T) {
+ dt := DateTime{Date{2016, 1, 2}, Time{3, 4, 5, 6}}
+ got := dt.In(time.UTC)
+ want := time.Date(2016, 1, 2, 3, 4, 5, 6, time.UTC)
+ if !got.Equal(want) {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestDateTimeBefore(t *testing.T) {
+ d1 := Date{2016, 12, 31}
+ d2 := Date{2017, 1, 1}
+ t1 := Time{5, 6, 7, 8}
+ t2 := Time{5, 6, 7, 9}
+ for _, test := range []struct {
+ dt1, dt2 DateTime
+ want bool
+ }{
+ {DateTime{d1, t1}, DateTime{d2, t1}, true},
+ {DateTime{d1, t1}, DateTime{d1, t2}, true},
+ {DateTime{d2, t1}, DateTime{d1, t1}, false},
+ {DateTime{d2, t1}, DateTime{d2, t1}, false},
+ } {
+ if got := test.dt1.Before(test.dt2); got != test.want {
+ t.Errorf("%v.Before(%v): got %t, want %t", test.dt1, test.dt2, got, test.want)
+ }
+ }
+}
+
+func TestDateTimeAfter(t *testing.T) {
+ d1 := Date{2016, 12, 31}
+ d2 := Date{2017, 1, 1}
+ t1 := Time{5, 6, 7, 8}
+ t2 := Time{5, 6, 7, 9}
+ for _, test := range []struct {
+ dt1, dt2 DateTime
+ want bool
+ }{
+ {DateTime{d1, t1}, DateTime{d2, t1}, false},
+ {DateTime{d1, t1}, DateTime{d1, t2}, false},
+ {DateTime{d2, t1}, DateTime{d1, t1}, true},
+ {DateTime{d2, t1}, DateTime{d2, t1}, false},
+ } {
+ if got := test.dt1.After(test.dt2); got != test.want {
+ t.Errorf("%v.After(%v): got %t, want %t", test.dt1, test.dt2, got, test.want)
+ }
+ }
+}
+
+func TestDateTimeIsZero(t *testing.T) {
+ for _, test := range []struct {
+ dt DateTime
+ want bool
+ }{
+ {DateTime{Date{2016, 3, 20}, Time{0, 0, 0, 0}}, false},
+ {DateTime{Date{}, Time{5, 44, 20, 0}}, false},
+ {DateTime{Date{2016, 3, 20}, Time{}}, false},
+ {DateTime{Date{0, 0, 0}, Time{5, 16, 47, 2}}, false},
+ {DateTime{Date{2021, 9, 5}, Time{9, 30, 51, 6}}, false},
+ {DateTime{Date{}, Time{}}, true},
+ {DateTime{Date{0, 0, 0}, Time{0, 0, 0, 0}}, true},
+ {DateTime{Date{}, Time{0, 0, 0, 0}}, true},
+ {DateTime{Date{0, 0, 0}, Time{}}, true},
+ } {
+ got := test.dt.IsZero()
+ if got != test.want {
+ t.Errorf("%#v: got %t, want %t", test.dt, got, test.want)
+ }
+ }
+}
+
+func TestMarshalJSON(t *testing.T) {
+ for _, test := range []struct {
+ value interface{}
+ want string
+ }{
+ {Date{1987, 4, 15}, `"1987-04-15"`},
+ {Time{18, 54, 2, 0}, `"18:54:02"`},
+ {DateTime{Date{1987, 4, 15}, Time{18, 54, 2, 0}}, `"1987-04-15T18:54:02"`},
+ } {
+ bgot, err := json.Marshal(test.value)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got := string(bgot); got != test.want {
+ t.Errorf("%#v: got %s, want %s", test.value, got, test.want)
+ }
+ }
+}
+
+func TestUnmarshalJSON(t *testing.T) {
+ var d Date
+ var tm Time
+ var dt DateTime
+ for _, test := range []struct {
+ data string
+ ptr interface{}
+ want interface{}
+ }{
+ {`"1987-04-15"`, &d, &Date{1987, 4, 15}},
+ {`"1987-04-\u0031\u0035"`, &d, &Date{1987, 4, 15}},
+ {`"18:54:02"`, &tm, &Time{18, 54, 2, 0}},
+ {`"1987-04-15T18:54:02"`, &dt, &DateTime{Date{1987, 4, 15}, Time{18, 54, 2, 0}}},
+ } {
+ if err := json.Unmarshal([]byte(test.data), test.ptr); err != nil {
+ t.Fatalf("%s: %v", test.data, err)
+ }
+ if !cmp.Equal(test.ptr, test.want) {
+ t.Errorf("%s: got %#v, want %#v", test.data, test.ptr, test.want)
+ }
+ }
+
+ for _, bad := range []string{"", `""`, `"bad"`, `"1987-04-15x"`,
+ `19870415`, // a JSON number
+ `11987-04-15x`, // not a JSON string
+
+ } {
+ if json.Unmarshal([]byte(bad), &d) == nil {
+ t.Errorf("%q, Date: got nil, want error", bad)
+ }
+ if json.Unmarshal([]byte(bad), &tm) == nil {
+ t.Errorf("%q, Time: got nil, want error", bad)
+ }
+ if json.Unmarshal([]byte(bad), &dt) == nil {
+ t.Errorf("%q, DateTime: got nil, want error", bad)
+ }
+ }
+}
diff --git a/events/admission/admission.go b/events/admission/admission.go
new file mode 100644
index 00000000..5da13dcf
--- /dev/null
+++ b/events/admission/admission.go
@@ -0,0 +1,18 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package admission
+
+import (
+ admissionv1 "k8s.io/api/admission/v1"
+)
+
+// ReviewEventType is the cloudevents event type when an admission controller
+// is invoked.
+const ReviewEventType = "dev.chainguard.admission.v1"
+
+// ReviewBody is the body of the Chainguard event Occurrence when the event type
+// is ReviewEventType.
+type ReviewBody admissionv1.AdmissionReview
diff --git a/events/admission/namespace.go b/events/admission/namespace.go
new file mode 100644
index 00000000..8e9f3eb0
--- /dev/null
+++ b/events/admission/namespace.go
@@ -0,0 +1,55 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package admission
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// NamespaceEventType is the cloudevents event type when a namespace's scope
+// changes to include or exclude a particular admission controller.
+const NamespaceEventType = "dev.chainguard.admission.namespace.v1"
+
+// Change is an enumeration of the types of changes we will emit events for.
+type Change string
+
+const (
+ // CreatedChange is emitted the first time we see a resource
+ CreatedChange Change = "created"
+
+ // UpdatedChange is emitted when we see a resource change.
+ UpdatedChange Change = "updated"
+)
+
+// EnforcerState is an enumeration of the possible states that the enforcer may
+// be in.
+type EnforcerState string
+
+const (
+ // EnabledEnforcerState is emitted when enforcement is enabled.
+ EnabledEnforcerState EnforcerState = "enabled"
+
+ // DisabledEnforcerState is emitted when enforcement is disabled.
+ DisabledEnforcerState EnforcerState = "disabled"
+)
+
+// NamespaceBody is the body of the Chainguard event Occurrence when the event
+// type is NamespaceEventType.
+type NamespaceBody struct {
+ // Name is the name of the namespace as it appears within the user's cluster
+ // e.g. kube-system
+ Name string `json:"name"`
+
+ // ID is the UIDP of the Namespace (whose parent is the Cluster UIDP)
+ ID uidp.UIDP `json:"id"`
+
+ // Change holds the type of change to the namespace we have observed.
+ Change Change `json:"change"`
+
+ // EnforcerState holds the state that policy enforcement is in for a
+ // particular namespace.
+ EnforcerState EnforcerState `json:"enforcer_state"`
+}
diff --git a/events/extensions.go b/events/extensions.go
new file mode 100644
index 00000000..0a4e9520
--- /dev/null
+++ b/events/extensions.go
@@ -0,0 +1,43 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package events
+
+const (
+ // DeliveryTypeKey is the CloudEvents extension name to filter on for kinds
+ // of deliveries.
+ DeliveryTypeKey = "chainguarddev1delivery"
+ // DeliveryTypeWebhook defines webhook delivery type.
+ DeliveryTypeWebhook = "webhook"
+
+ // DeliveryWebhookTargetKey is the CloudEvents extension name to store the
+ // target url for webhooks.
+ DeliveryWebhookTargetKey = "chainguarddev1webhook"
+
+ // DeliverySubscriptionKey is the CloudEvents extension name to store the
+ // subscription id that caused the event.
+ DeliverySubscriptionKey = "chainguarddev1subscription"
+
+ // GroupKey is the CloudEvents extension name to store the group associated
+ // to the event.
+ GroupKey = "group"
+ // ClusterKey is the CloudEvents extension name to store the cluster associated
+ // to the event.
+ ClusterKey = "cluster"
+ // ImageKey is the CloudEvents extension name to store the image associated
+ // to the event.
+ ImageKey = "image"
+
+ // AudienceKey labels an event for its intended audience ["internal", "customer"].
+ AudienceKey = "audience"
+ // AudienceInternal are events intended for the internal platform.
+ AudienceInternal = "internal"
+ // AudienceCustomer are events targeting outside the platform.
+ AudienceCustomer = "customer"
+
+ // ArrivalTimeKey is the CloudEvents extension name to store the Knative
+ // arrival timestamp
+ ArrivalTimeKey = "knativearrivaltime"
+)
diff --git a/events/generator/generator.go b/events/generator/generator.go
new file mode 100644
index 00000000..70bad22d
--- /dev/null
+++ b/events/generator/generator.go
@@ -0,0 +1,32 @@
+/*
+Copyright 2024 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package generator
+
+import (
+ "chainguard.dev/sdk/civil"
+ "google.golang.org/grpc/status"
+)
+
+const GenerateVulnReportEventType = "dev.chainguard.vulnreport.generate.v1"
+
+// GenerateVulnReportEvent is an event used to trigger the generation of scan reports on-demand
+type GenerateVulnReportEvent struct {
+ // RepoID identifies the UIDP of the repository used to generate the report
+ RepoID string `json:"repo_id"`
+
+ // Digest holds the digest being used to generate the report.
+ // Digest will hold the sha256 content.
+ Digest string `json:"digest"`
+
+ // Type determines whether the report being generated is a refresh.
+ Type string `json:"type"`
+
+ // When holds when the generation of the report occurred.
+ When civil.DateTime `json:"when"`
+
+ // Status to represent the problem
+ Status *status.Status `json:"status,omitempty"`
+}
diff --git a/events/occurrence.go b/events/occurrence.go
new file mode 100644
index 00000000..d77dcd7c
--- /dev/null
+++ b/events/occurrence.go
@@ -0,0 +1,41 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package events
+
+// Occurrence is the CloudEvent payload for events.
+type Occurrence struct {
+ Actor *Actor `json:"actor,omitempty"`
+
+ // Body is the resource that was created.
+ Body interface{} `json:"body,omitempty"`
+}
+
+// Actor is the event payload form of which identity was responsible for the
+// event.
+type Actor struct {
+ // Subject is the identity that triggered this event.
+ Subject string `json:"subject"`
+
+ // Actor contains the name/value pairs for each of the claims that were
+ // validated to assume the identity whose UIDP appears in Subject above.
+ Actor map[string]string `json:"act,omitempty"`
+}
+
+// Eventable allows us to define a set of methods that allow event metadata to
+// be collected.
+type Eventable interface {
+ // CloudEventsSubject returns the subject to use for the cloudevent.
+ CloudEventsSubject() string
+}
+
+// Extendable allows us to define a generic method to return extensions based on name.
+type Extendable interface {
+ CloudEventsExtension(key string) (string, bool)
+}
+
+type Redactable interface {
+ CloudEventsRedact() interface{}
+}
diff --git a/events/policy/policy.go b/events/policy/policy.go
new file mode 100644
index 00000000..f1748aa6
--- /dev/null
+++ b/events/policy/policy.go
@@ -0,0 +1,46 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package policy
+
+import cloudevents "github.com/cloudevents/sdk-go/v2"
+
+// ChangedEventType is the cloudevents event type for validation state change for policy.
+const ChangedEventType = "dev.chainguard.policy.validation.changed.v1"
+
+const (
+ // NewChange is for new policy state.
+ NewChange = "new"
+ // DegradedChange says the policy was passing and now is failing.
+ DegradedChange = "degraded"
+ // ImprovedChange says the policy was failing and now is passing.
+ ImprovedChange = "improved"
+)
+
+// ImagePolicyRecord is policy states for an image in a cluster.
+type ImagePolicyRecord struct {
+ // ClusterID identifies the specific cluster the Request pertains to.
+ ClusterID string `json:"cluster_id,omitempty"`
+ // ImageID that this ExistenceRecord belongs to.
+ ImageID string `json:"image_id,omitempty"`
+ // LastSeen is the last time we've seen this image_id anywhere on this cluster.
+ LastSeen *cloudevents.Timestamp `json:"last_seen,omitempty"`
+ // Policies are a map of policy name to policy state that apply to this image.
+ Policies map[string]*State `json:"policies,omitempty"`
+}
+
+// State is the state of a policy and how it has changed.
+type State struct {
+ // LastChecked is the time the information was last updated.
+ LastChecked *cloudevents.Timestamp `json:"last_checked,omitempty"`
+ // Valid is if the image passes the policy.
+ Valid bool `json:"valid"`
+ // Diagnostic holds any diagnostic messages surfaced during the evaluation
+ // of this policy.
+ Diagnostic string `json:"diagnostic,omitempty"`
+ // Change is the kind of change we have seen for this image between checks.
+ // Can be [Empty, "new", "degraded", "improved"]
+ Change string `json:"change,omitempty"`
+}
diff --git a/events/receiver/receiver.go b/events/receiver/receiver.go
new file mode 100644
index 00000000..565f5008
--- /dev/null
+++ b/events/receiver/receiver.go
@@ -0,0 +1,66 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package receiver
+
+import (
+ "context"
+ "crypto/sha256"
+ "fmt"
+ "net/http"
+ "strings"
+
+ "chainguard.dev/sdk/events"
+ cloudevents "github.com/cloudevents/sdk-go/v2"
+ cehttp "github.com/cloudevents/sdk-go/v2/protocol/http"
+ "github.com/coreos/go-oidc/v3/oidc"
+)
+
+// Handler is a function that handles a CloudEvent.
+type Handler func(ctx context.Context, event cloudevents.Event) error
+
+// New returns a new Handler that verifies the Event was sent by Chainguard,
+// intended for the specified Group, then invokes the provided Handler.
+//
+// TODO(jason): Accept options for configuring the issuer and accepted event types.
+func New(ctx context.Context, issuer, group string, fn Handler) (Handler, error) {
+ // Construct a verifier that ensures tokens are issued by the Chainguard
+ // issuer we expect and are intended for a customer webhook.
+ provider, err := oidc.NewProvider(ctx, issuer)
+ if err != nil {
+ return nil, fmt.Errorf("failed to create provider: %w", err)
+ }
+ verifier := provider.Verifier(&oidc.Config{ClientID: "customer"})
+
+ return func(ctx context.Context, event cloudevents.Event) error {
+ // We expect Chainguard webhooks to pass an Authorization header.
+ auth := strings.TrimPrefix(cehttp.RequestDataFromContext(ctx).Header.Get("Authorization"), "Bearer ")
+ if auth == "" {
+ return cloudevents.NewHTTPResult(http.StatusUnauthorized, "Unauthorized")
+ }
+
+ claims := events.WebhookCustomClaims{}
+
+ // Verify that the token is well-formed, and in fact intended for us!
+ if tok, err := verifier.Verify(ctx, auth); err != nil {
+ return cloudevents.NewHTTPResult(http.StatusForbidden, "unable to verify token: %w", err)
+ } else if !strings.HasPrefix(tok.Subject, "webhook:") {
+ return cloudevents.NewHTTPResult(http.StatusForbidden, "subject should be from the Chainguard webhook component, got: %s", tok.Subject)
+ } else if got := strings.TrimPrefix(tok.Subject, "webhook:"); got != group {
+ return cloudevents.NewHTTPResult(http.StatusForbidden, "this token is intended for %s, wanted one for %s", got, group)
+ } else if err := tok.Claims(&claims); err != nil {
+ return cloudevents.NewHTTPResult(http.StatusForbidden, "this token does not contain the Chainguard custom webhook claims: %v", err)
+ }
+
+ h := sha256.New()
+ h.Write(event.Data())
+ bs := h.Sum(nil)
+ if got, want := fmt.Sprintf("sha256:%x", bs), claims.Webhook.Digest; got != want {
+ return cloudevents.NewHTTPResult(http.StatusForbidden, "this token is intended for a message with digest %s, got message with digest %s", want, got)
+ }
+
+ return fn(ctx, event)
+ }, nil
+}
diff --git a/events/registry/registry.go b/events/registry/registry.go
new file mode 100644
index 00000000..dc338ac2
--- /dev/null
+++ b/events/registry/registry.go
@@ -0,0 +1,91 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package registry
+
+import "chainguard.dev/sdk/civil"
+
+const (
+ // PulledEventType is the cloudevents event type for registry pulls
+ PulledEventType = "dev.chainguard.registry.pull.v1"
+
+ // PushedEventType is the cloudevents event type for registry pushes
+ PushedEventType = "dev.chainguard.registry.push.v1"
+)
+
+// PullEvent describes an item being pulled from the registry.
+type PullEvent struct {
+ // Repository identifies the repository being pulled
+ Repository string `json:"repository"`
+
+ // RepoID identifies the UIDP of the repository being pulled
+ RepoID string `json:"repo_id"`
+
+ // Tag holds the tag being pulled, if there is one.
+ Tag string `json:"tag,omitempty"`
+
+ // Digest holds the digest being pulled.
+ // Digest will hold the sha256 of the content being fetched, whether that is
+ // a blob or a manifest.
+ Digest string `json:"digest"`
+
+ // Method holds the HTTP method of the request. For pulls, this should be
+ // one of HEAD (digest resolution or existence check), or GET to actually
+ // fetch the content.
+ Method string `json:"method"`
+
+ // Type determines whether the object being fetched is a manifest or blob.
+ Type string `json:"type"`
+
+ // When holds when the pull occurred.
+ When civil.DateTime `json:"when"`
+
+ // Location holds the detected approximate location of the client who pulled.
+ // For example, "ColumbusOHUS" or "Minato City13JP".
+ Location string `json:"location"`
+
+ // UserAgent holds the user-agent of the client who pulled.
+ UserAgent string `json:"user_agent"`
+
+ Error *Error `json:"error,omitempty"`
+}
+
+// PushEvent describes an item being pushed to the registry.
+type PushEvent struct {
+ // Repository identifies the repository being pushed
+ Repository string `json:"repository"`
+
+ // RepoID identifies the UIDP of the repository being pushed
+ RepoID string `json:"repo_id"`
+
+ // Tag holds the tag being pushed, if there is one.
+ Tag string `json:"tag,omitempty"`
+
+ // Digest holds the digest being pushed.
+ // Digest will hold the sha256 of the content being pushed, whether that is
+ // a blob or a manifest.
+ Digest string `json:"digest"`
+
+ // Type determines whether the object being pushed is a manifest or blob.
+ Type string `json:"type"`
+
+ // When holds when the push occurred.
+ When civil.DateTime `json:"when"`
+
+ // Location holds the detected approximate location of the client who pushed.
+ // For example, "ColumbusOHUS" or "Minato City13JP".
+ Location string `json:"location"`
+
+ // UserAgent holds the user-agent of the client who pushed.
+ UserAgent string `json:"user_agent"`
+
+ Error *Error `json:"error,omitempty"`
+}
+
+type Error struct {
+ Status int `json:"status"`
+ Code string `json:"code"`
+ Message string `json:"message"`
+}
diff --git a/events/webhook.go b/events/webhook.go
new file mode 100644
index 00000000..56a17013
--- /dev/null
+++ b/events/webhook.go
@@ -0,0 +1,14 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package events
+
+// WebhookCustomClaims holds the custom claims embedded in the webhook's
+// OIDC authorization token.
+type WebhookCustomClaims struct {
+ Webhook struct {
+ Digest string `json:"digest"`
+ } `json:"webhook"`
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 00000000..dbe084d2
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,155 @@
+module chainguard.dev/sdk
+
+go 1.21.2
+
+toolchain go1.21.5
+
+require (
+ chainguard.dev/go-grpc-kit v0.17.2
+ chainguard.dev/go-oidctest v0.2.0
+ github.com/aws/aws-sdk-go-v2 v1.24.1
+ github.com/bits-and-blooms/bitset v1.13.0
+ github.com/chainguard-dev/clog v1.3.1
+ github.com/cloudevents/sdk-go/v2 v2.15.0
+ github.com/coreos/go-oidc/v3 v3.9.0
+ github.com/google/go-cmp v0.6.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1
+ github.com/microcosm-cc/bluemonday v1.0.26
+ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
+ github.com/russross/blackfriday/v2 v2.1.0
+ github.com/sigstore/policy-controller v0.8.4
+ go.uber.org/zap v1.26.0
+ golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
+ golang.org/x/oauth2 v0.17.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe
+ google.golang.org/grpc v1.61.1
+ google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
+ google.golang.org/protobuf v1.32.0
+ gopkg.in/square/go-jose.v2 v2.6.0
+ k8s.io/api v0.29.1
+ k8s.io/apimachinery v0.29.1
+ knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845
+ sigs.k8s.io/yaml v1.4.0
+)
+
+require (
+ cloud.google.com/go/compute v1.23.3 // indirect
+ cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/iam v1.1.5 // indirect
+ cloud.google.com/go/kms v1.15.5 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect
+ github.com/aws/aws-sdk-go v1.50.1 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.26.6 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 // indirect
+ github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect
+ github.com/aws/smithy-go v1.19.0 // indirect
+ github.com/aymerick/douceur v0.2.0 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/blendle/zapdriver v1.3.1 // indirect
+ github.com/cenkalti/backoff/v3 v3.2.2 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/evanphx/json-patch/v5 v5.7.0 // indirect
+ github.com/fatih/color v1.13.0 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/go-jose/go-jose/v3 v3.0.1 // indirect
+ github.com/go-logr/logr v1.3.0 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
+ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
+ github.com/golang/protobuf v1.5.3 // indirect
+ github.com/google/go-containerregistry v0.18.0 // indirect
+ github.com/google/gofuzz v1.2.0 // indirect
+ github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/uuid v1.5.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.0 // indirect
+ github.com/gorilla/css v1.0.0 // indirect
+ github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
+ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
+ github.com/hashicorp/errwrap v1.1.0 // indirect
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+ github.com/hashicorp/go-multierror v1.1.1 // indirect
+ github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
+ github.com/hashicorp/go-rootcerts v1.0.2 // indirect
+ github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect
+ github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
+ github.com/hashicorp/go-sockaddr v1.0.6 // indirect
+ github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
+ github.com/hashicorp/vault/api v1.10.0 // indirect
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/jellydator/ttlcache/v3 v3.1.1 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/kelseyhightower/envconfig v1.4.0 // indirect
+ github.com/kylelemons/godebug v1.1.0 // indirect
+ github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect
+ github.com/mattn/go-colorable v0.1.9 // indirect
+ github.com/mattn/go-isatty v0.0.17 // indirect
+ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
+ github.com/mitchellh/go-homedir v1.1.0 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/opencontainers/go-digest v1.0.0 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/prometheus/client_golang v1.17.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.45.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/ryanuber/go-glob v1.0.0 // indirect
+ github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect
+ github.com/sigstore/sigstore v1.8.1 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 // indirect
+ github.com/spf13/cobra v1.8.0 // indirect
+ github.com/spf13/pflag v1.0.5 // indirect
+ github.com/theupdateframework/go-tuf v0.7.0 // indirect
+ github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
+ go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
+ go.opentelemetry.io/otel v1.21.0 // indirect
+ go.opentelemetry.io/otel/metric v1.21.0 // indirect
+ go.opentelemetry.io/otel/trace v1.21.0 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ golang.org/x/crypto v0.19.0 // indirect
+ golang.org/x/net v0.21.0 // indirect
+ golang.org/x/sync v0.6.0 // indirect
+ golang.org/x/sys v0.17.0 // indirect
+ golang.org/x/term v0.17.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
+ google.golang.org/api v0.156.0 // indirect
+ google.golang.org/appengine v1.6.8 // indirect
+ google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect
+ gopkg.in/go-jose/go-jose.v2 v2.6.2 // indirect
+ gopkg.in/inf.v0 v0.9.1 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ k8s.io/client-go v0.29.1 // indirect
+ k8s.io/klog/v2 v2.110.1 // indirect
+ k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
+ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
+ sigs.k8s.io/release-utils v0.7.7 // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 00000000..4ca5f6bb
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,534 @@
+chainguard.dev/go-grpc-kit v0.17.2 h1:WVYmCjDncj1MkEiU4qq7nIgzyqlCU+qyk0lJvTJ09bs=
+chainguard.dev/go-grpc-kit v0.17.2/go.mod h1:uZTFtFzAGyVFHhJexiHbna4N5rHQU7aUXPwytlGhqz4=
+chainguard.dev/go-oidctest v0.2.0 h1:03EuCjzAjbCvIOpSA+135g51Wdefz3UgQ8OtfSFQKCI=
+chainguard.dev/go-oidctest v0.2.0/go.mod h1:1qO3asevouDqgMw4sgaVSzXqgDZQN7B6PtxLoUTzndo=
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM=
+cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU=
+cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
+cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
+cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
+cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
+cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
+cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
+cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 h1:lGlwhPtrX6EVml1hO0ivjkUxsSyl4dsiw9qcA1k/3IQ=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1/go.mod h1:RKUqNu35KJYcVG/fqTRqmuXJZYNhYkBrnC/hX7yGbTA=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 h1:6oNBlSdi1QqM1PNW7FPA6xOGA5UNsXnkaYZz9vdPGhA=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/aws/aws-sdk-go v1.50.1 h1:AwnLUM7TcH9vMZqA4TcDKmGfLmDW5VXwT5tPH6kXylo=
+github.com/aws/aws-sdk-go v1.50.1/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU=
+github.com/aws/aws-sdk-go-v2 v1.24.1/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
+github.com/aws/aws-sdk-go-v2/config v1.26.6 h1:Z/7w9bUqlRI0FFQpetVuFYEsjzE3h7fpU6HuGmfPL/o=
+github.com/aws/aws-sdk-go-v2/config v1.26.6/go.mod h1:uKU6cnDmYCvJ+pxO9S4cWDb2yWWIH5hra+32hVh1MI4=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.16 h1:8q6Rliyv0aUFAVtzaldUEcS+T5gbadPbWdV1WcAddK8=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.16/go.mod h1:UHVZrdUsv63hPXFo1H7c5fEneoVo9UXiz36QG1GEPi0=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tCKJDaHFwYEmxvlh2fAcFo8=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 h1:vF+Zgd9s+H4vOXd5BMaPWykta2a6Ih0AKLq/X6NYKn4=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10/go.mod h1:6BkRjejp/GR4411UGqkX8+wFMbFbqsUIimfK4XjOKR4=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 h1:nYPe006ktcqUji8S2mqXf9c/7NdiKriOwMvWQHgYztw=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10/go.mod h1:6UV4SZkVvmODfXKql4LCbaZUpF7HO2BX38FgBf9ZOLw=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 h1:n3GDfwqF2tzEkXlv5cuy4iy7LpKDtqDMcNLfZDu9rls=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 h1:DBYTXwIGQSGs9w4jKm60F5dmCQ3EEruxdc0MFh+3EY4=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10/go.mod h1:wohMUQiFdzo0NtxbBg0mSRGZ4vL3n0dKjLTINdcIino=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 h1:W9PbZAZAEcelhhjb7KuwUtf+Lbc+i7ByYJRuWLlnxyQ=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.9/go.mod h1:2tFmR7fQnOdQlM2ZCEPpFnBIQD1U8wmXmduBgZbOag0=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.7/go.mod h1:+mJNDdF+qiUlNKNC3fxn74WWNN+sOiGOEImje+3ScPM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 h1:QPMJf+Jw8E1l7zqhZmMlFw6w1NmfkfiSK8mS4zOx3BA=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7/go.mod h1:ykf3COxYI0UJmxcfcxcVuz7b6uADi1FkiUz6Eb7AgM8=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U=
+github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
+github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
+github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
+github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
+github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
+github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE=
+github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc=
+github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=
+github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chainguard-dev/clog v1.3.1 h1:CDNCty5WKQhJzoOPubk0GdXt+bPQyargmfClqebrpaQ=
+github.com/chainguard-dev/clog v1.3.1/go.mod h1:cV516KZWqYc/phZsCNwF36u/KMGS+Gj5Uqeb8Hlp95Y=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudevents/sdk-go/v2 v2.15.0 h1:aKnhLQhyoJXqEECQdOIZnbZ9VupqlidE6hedugDGr+I=
+github.com/cloudevents/sdk-go/v2 v2.15.0/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101 h1:7To3pQ+pZo0i3dsWEbinPNFs5gPSBOsJtx3wTT94VBY=
+github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
+github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
+github.com/coreos/go-oidc/v3 v3.9.0 h1:0J/ogVOd4y8P0f0xUh8l9t07xRP/d8tccvjHl2dcsSo=
+github.com/coreos/go-oidc/v3 v3.9.0/go.mod h1:rTKz2PYwftcrtoCzV5g5kvfJoWcm0Mk8AF8y1iAQro4=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
+github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
+github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
+github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
+github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
+github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
+github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc=
+github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
+github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
+github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA=
+github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8=
+github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
+github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
+github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ=
+github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA=
+github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
+github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
+github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=
+github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
+github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
+github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
+github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-containerregistry v0.18.0 h1:ShE7erKNPqRh5ue6Z9DUOlk04WsnFWPO6YGr3OxnfoQ=
+github.com/google/go-containerregistry v0.18.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
+github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
+github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
+github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
+github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
+github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
+github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
+github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
+github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU=
+github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM=
+github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
+github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
+github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
+github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
+github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
+github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
+github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs=
+github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
+github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
+github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
+github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=
+github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
+github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
+github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
+github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc=
+github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0=
+github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
+github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
+github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I=
+github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
+github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
+github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
+github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ=
+github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/jellydator/ttlcache/v3 v3.1.1 h1:RCgYJqo3jgvhl+fEWvjNW8thxGWsgxi+TPhRir1Y9y8=
+github.com/jellydator/ttlcache/v3 v3.1.1/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
+github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs=
+github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
+github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 h1:WGrKdjHtWC67RX96eTkYD2f53NDHhrq/7robWTAfk4s=
+github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491/go.mod h1:o158RFmdEbYyIZmXAbrvmJWesbyxlLKee6X64VPVuOc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
+github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
+github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
+github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
+github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
+github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
+github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
+github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
+github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
+github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
+github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
+github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
+github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
+github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA=
+github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU=
+github.com/sigstore/policy-controller v0.8.4 h1:1ieS2W4GfcWfxvdE7lbfZlgW2dSnUinae2OoUM5/7Vg=
+github.com/sigstore/policy-controller v0.8.4/go.mod h1:jQtLtLpcwzIuRrCtNjWLWfSQlI4ompYOU9CW5dPi6t8=
+github.com/sigstore/sigstore v1.8.1 h1:mAVposMb14oplk2h/bayPmIVdzbq2IhCgy4g6R0ZSjo=
+github.com/sigstore/sigstore v1.8.1/go.mod h1:02SL1158BSj15bZyOFz7m+/nJzLZfFd9A8ab3Kz7w/E=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 h1:rEDdUefulkIQaMJyzLwtgPDLNXBIltBABiFYfb0YmgQ=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1/go.mod h1:RCdYCc1IxCYWzh2IdzdA6Yf7JIY0cMRqH08fpQYechw=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 h1:DvRWG99QGWZC5mp42SEde2Xke/Q384Idnj2da7yB+Mk=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1/go.mod h1:s13mo3a0UCQS3+PAUUZfvKe48sMDMsHk2GE1b2YfPcU=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 h1:lwdRsJv1UbBemuk7w5YfXAQilQxMoFevrzamdPbG0wY=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1/go.mod h1:2OaSQ80EcdyVRSQ3T4d1lsc6Scopblsiq8U2AEk5K1A=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 h1:9Ki0qudKpc1FQdef7xHO2bkLyTuw+qNUpWRzjBEmF4c=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1/go.mod h1:nhIgyu4YwwNgalIwTGsoAzam16jjAn3ADRSWKbWPwGI=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
+github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
+github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
+github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
+github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
+go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
+go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
+go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
+go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
+go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
+go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
+go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
+go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
+go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
+go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
+go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
+go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
+go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w=
+golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
+golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
+golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
+gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
+google.golang.org/api v0.156.0 h1:yloYcGbBtVYjLKQe4enCunxvwn3s2w/XPrrhVf6MsvQ=
+google.golang.org/api v0.156.0/go.mod h1:bUSmn4KFO0Q+69zo9CNIDp4Psi6BqM0np0CbzKRSiSY=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
+google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg=
+google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k=
+google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe h1:0poefMBYvYbs7g5UkjS6HcxBPaTRAmznle9jnxYoAI8=
+google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY=
+google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/go-jose/go-jose.v2 v2.6.2 h1:Rl5+9rA0kG3vsO1qhncMPRT5eHICihAMQYJkD7u/i4M=
+gopkg.in/go-jose/go-jose.v2 v2.6.2/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
+gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
+gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
+gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+k8s.io/api v0.29.1 h1:DAjwWX/9YT7NQD4INu49ROJuZAAAP/Ijki48GUPzxqw=
+k8s.io/api v0.29.1/go.mod h1:7Kl10vBRUXhnQQI8YR/R327zXC8eJ7887/+Ybta+RoQ=
+k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc=
+k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU=
+k8s.io/client-go v0.29.1 h1:19B/+2NGEwnFLzt0uB5kNJnfTsbV8w6TgQRz9l7ti7A=
+k8s.io/client-go v0.29.1/go.mod h1:TDG/psL9hdet0TI9mGyHJSgRkW3H9JZk2dNEUS7bRks=
+k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
+k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
+k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=
+k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
+k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
+k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 h1:NJm46LR4AeO03E0H7B+TYTkelTSnsswktpIAaK1pkTg=
+knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845/go.mod h1:9UXGl+Sue7Am1/mbvLimpPZwQlOkbjAMMIenH60pVJ4=
+sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
+sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
+sigs.k8s.io/release-utils v0.7.7 h1:JKDOvhCk6zW8ipEOkpTGDH/mW3TI+XqtPp16aaQ79FU=
+sigs.k8s.io/release-utils v0.7.7/go.mod h1:iU7DGVNi3umZJ8q6aHyUFzsDUIaYwNnNKGHo3YE5E3s=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/hack/tools.go b/hack/tools.go
new file mode 100644
index 00000000..eea6e0ce
--- /dev/null
+++ b/hack/tools.go
@@ -0,0 +1,17 @@
+//go:build tools
+// +build tools
+
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package tools
+
+import (
+ // Proto dependencies.
+ _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
+ _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
+ _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
+ _ "google.golang.org/protobuf/cmd/protoc-gen-go"
+)
diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh
new file mode 100755
index 00000000..a557bd13
--- /dev/null
+++ b/hack/update-codegen.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+# Copyright 2022 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+REPO_ROOT_DIR=$PWD/$(dirname "$0")/..
+
+echo === Tidying up for Golang
+go mod tidy
+
+echo === Generating for Golang
+go generate ./...
+
+# Make sure our dependencies are up-to-date
+${REPO_ROOT_DIR}/hack/update-deps.sh
diff --git a/hack/update-deps.sh b/hack/update-deps.sh
new file mode 100755
index 00000000..19e9873e
--- /dev/null
+++ b/hack/update-deps.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+# Copyright 2022 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+REPO_ROOT_DIR=$(dirname "$0")/..
+pushd ${REPO_ROOT_DIR}
+
+echo === Update Deps for Golang
+go mod tidy
diff --git a/hack/verify-golangci-lint.sh b/hack/verify-golangci-lint.sh
new file mode 100755
index 00000000..ec8c6ef0
--- /dev/null
+++ b/hack/verify-golangci-lint.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+
+# Copyright 2023 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+VERSION=v1.54.2
+URL_BASE=https://raw.githubusercontent.com/golangci/golangci-lint
+URL=$URL_BASE/$VERSION/install.sh
+# If you update the version above you might need to update the checksum
+# if it does not match. We say might because in the past the install script
+# has been unchanged even if there is a new verion of golangci-lint.
+# To obtain the checksum, download the install script and run the following
+# command:
+# > sha256sum
+INSTALL_CHECKSUM=060f1f3deb31b3d3b9515d691d9a776354cd63c7fcb5e036f18f0444cf2c934b
+
+if [[ ! -f .golangci.yml ]]; then
+ echo 'ERROR: missing .golangci.yml in repo root' >&2
+ exit 1
+fi
+
+if ! command -v golangci-lint; then
+ INSTALL_SCRIPT=$(mktemp -d)/install.sh
+ curl -sfL $URL >$INSTALL_SCRIPT
+ if echo "${INSTALL_CHECKSUM} $INSTALL_SCRIPT" | sha256sum --check; then
+ chmod 755 $INSTALL_SCRIPT
+ $INSTALL_SCRIPT -b /tmp $VERSION
+ export PATH=$PATH:/tmp
+ pwd
+ else
+ echo 'ERROR: install script sha256 checksum invalid' >&2
+ exit 1
+ fi
+fi
+
+golangci-lint version
+
+error=0
+while read -r i; do
+ echo "Checking golangci-lint for $i"
+ pushd "$i"
+ golangci-lint run ./... || error=1
+ popd
+done <<< "$(find . -name go.mod -exec dirname {} \;)"
+
+exit $error
diff --git a/policy/parse.go b/policy/parse.go
new file mode 100644
index 00000000..206c1a68
--- /dev/null
+++ b/policy/parse.go
@@ -0,0 +1,144 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package policy
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "strings"
+
+ "github.com/sigstore/policy-controller/pkg/apis/glob"
+ "github.com/sigstore/policy-controller/pkg/apis/policy/v1alpha1"
+ "github.com/sigstore/policy-controller/pkg/apis/policy/v1beta1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "knative.dev/pkg/apis"
+ "sigs.k8s.io/yaml"
+)
+
+// Parse decodes a provided YAML document containing zero or more objects into
+// a collection of unstructured.Unstructured objects.
+func Parse(_ context.Context, document string) ([]*unstructured.Unstructured, error) {
+ docs := strings.Split(document, "\n---\n")
+
+ objs := make([]*unstructured.Unstructured, 0, len(docs))
+ for i, doc := range docs {
+ doc = strings.TrimSpace(doc)
+ if doc == "" {
+ continue
+ }
+ var obj unstructured.Unstructured
+ if err := yaml.Unmarshal([]byte(doc), &obj); err != nil {
+ return nil, fmt.Errorf("decoding object[%d]: %w", i, err)
+ }
+ if obj.GetAPIVersion() == "" {
+ return nil, apis.ErrMissingField("apiVersion").ViaIndex(i)
+ }
+ if obj.GetName() == "" {
+ return nil, apis.ErrMissingField("metadata.name").ViaIndex(i)
+ }
+ objs = append(objs, &obj)
+ }
+ return objs, nil
+}
+
+// ParseClusterImagePolicies returns ClusterImagePolicy objects found in the
+// policy document.
+func ParseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, warns error, err error) {
+ if warns, err = Validate(ctx, document); err != nil {
+ return nil, warns, err
+ }
+
+ cips, err = parseClusterImagePolicies(ctx, document)
+ if err != nil {
+ return nil, warns, err
+ }
+
+ return cips, warns, nil
+}
+
+// UnsafeParseClusterImagePolicies returns ClusterImagePolicy objects found in the
+// policy document, without validating if the policy is valid.
+func UnsafeParseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, err error) {
+ return parseClusterImagePolicies(ctx, document)
+}
+
+// CoversImage parses the given policy document, and checks if the target image
+// matches any of the image globs included in the policy.
+func CoversImage(ctx context.Context, document, target string) (bool, error) {
+ cips, _, err := ParseClusterImagePolicies(ctx, document)
+ if err != nil {
+ return false, err
+ }
+ if len(cips) != 1 {
+ return false, fmt.Errorf("document must contain exactly one ClusterImagePolicy (%d found)", len(cips))
+ }
+
+ for _, image := range cips[0].Spec.Images {
+ ok, err := glob.Match(image.Glob, target)
+ if err != nil {
+ return false, err
+ }
+ if ok {
+ return true, nil
+ }
+ }
+ return false, nil
+}
+
+func parseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, err error) {
+ ol, err := Parse(ctx, document)
+ if err != nil {
+ return nil, err
+ }
+
+ cips = make([]*v1beta1.ClusterImagePolicy, 0)
+ for _, obj := range ol {
+ gv, err := schema.ParseGroupVersion(obj.GetAPIVersion())
+ if err != nil {
+ // Practically unstructured.Unstructured won't let this happen.
+ return nil, fmt.Errorf("error parsing apiVersion of: %w", err)
+ }
+
+ cip := &v1beta1.ClusterImagePolicy{}
+
+ switch gv.WithKind(obj.GetKind()) {
+ case v1alpha1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
+ v1a1 := &v1alpha1.ClusterImagePolicy{}
+ if err := convert(obj, v1a1); err != nil {
+ return nil, err
+ }
+ if err := v1a1.ConvertTo(ctx, cip); err != nil {
+ return nil, err
+ }
+
+ case v1beta1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
+ // This is allowed, but we should convert things.
+ if err := convert(obj, cip); err != nil {
+ return nil, err
+ }
+
+ default:
+ continue
+ }
+
+ cips = append(cips, cip)
+ }
+ return cips, nil
+}
+
+func convert(from interface{}, to runtime.Object) error {
+ bs, err := json.Marshal(from)
+ if err != nil {
+ return fmt.Errorf("Marshal() = %w", err)
+ }
+ if err := json.Unmarshal(bs, to); err != nil {
+ return fmt.Errorf("Unmarshal() = %w", err)
+ }
+ return nil
+}
diff --git a/policy/parse_test.go b/policy/parse_test.go
new file mode 100644
index 00000000..e6345ea3
--- /dev/null
+++ b/policy/parse_test.go
@@ -0,0 +1,181 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package policy
+
+import (
+ "context"
+ "errors"
+ "testing"
+
+ "github.com/google/go-cmp/cmp"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "knative.dev/pkg/apis"
+)
+
+func TestParse(t *testing.T) {
+ tests := []struct {
+ name string
+ doc string
+ want []*unstructured.Unstructured
+ wantErr error
+ }{{
+ name: "good single object",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec: {}
+`,
+ want: []*unstructured.Unstructured{{
+ Object: map[string]interface{}{
+ "apiVersion": "policy.sigstore.dev/v1beta1",
+ "kind": "ClusterImagePolicy",
+ "metadata": map[string]interface{}{
+ "name": "blah",
+ },
+ "spec": map[string]interface{}{},
+ },
+ }},
+ }, {
+ name: "good multi-object",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec: {}
+---
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: foo
+spec: {}
+---
+
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: bar
+spec: {}
+`,
+ want: []*unstructured.Unstructured{{
+ Object: map[string]interface{}{
+ "apiVersion": "policy.sigstore.dev/v1beta1",
+ "kind": "ClusterImagePolicy",
+ "metadata": map[string]interface{}{
+ "name": "blah",
+ },
+ "spec": map[string]interface{}{},
+ },
+ }, {
+ Object: map[string]interface{}{
+ "apiVersion": "policy.sigstore.dev/v1beta1",
+ "kind": "ClusterImagePolicy",
+ "metadata": map[string]interface{}{
+ "name": "foo",
+ },
+ "spec": map[string]interface{}{},
+ },
+ }, {
+ Object: map[string]interface{}{
+ "apiVersion": "policy.sigstore.dev/v1beta1",
+ "kind": "ClusterImagePolicy",
+ "metadata": map[string]interface{}{
+ "name": "bar",
+ },
+ "spec": map[string]interface{}{},
+ },
+ }},
+ }, {
+ name: "bad missing apiVersion",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec: {}
+---
+# Missing: apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: foo
+spec: {}
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: bar
+spec: {}
+`,
+ wantErr: apis.ErrMissingField("[1].apiVersion"),
+ }, {
+ name: "bad missing kind",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec: {}
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: foo
+spec: {}
+---
+apiVersion: policy.sigstore.dev/v1beta1
+# Missing: kind: ClusterImagePolicy
+metadata:
+ name: bar
+spec: {}
+`,
+ wantErr: errors.New(`decoding object[2]: error unmarshaling JSON: while decoding JSON: Object 'Kind' is missing in '{"apiVersion":"policy.sigstore.dev/v1beta1","metadata":{"name":"bar"},"spec":{}}'`),
+ }, {
+ name: "bad missing apiVersion",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ # Missing: name: blah
+sp dec: {}
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: foo
+spec: {}
+---
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: bar
+spec: {}
+`,
+ wantErr: apis.ErrMissingField("[0].metadata.name"),
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ got, gotErr := Parse(context.Background(), test.doc)
+
+ switch {
+ case (gotErr != nil) != (test.wantErr != nil):
+ t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
+ case gotErr != nil && gotErr.Error() != test.wantErr.Error():
+ t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
+ case gotErr != nil:
+ return // This was an error test.
+ }
+
+ if diff := cmp.Diff(got, test.want); diff != "" {
+ t.Errorf("Parse (-got, +want) = %s", diff)
+ }
+ })
+ }
+}
diff --git a/policy/validate.go b/policy/validate.go
new file mode 100644
index 00000000..a785fe5b
--- /dev/null
+++ b/policy/validate.go
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package policy
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+
+ "github.com/sigstore/policy-controller/pkg/apis/policy/v1alpha1"
+ "github.com/sigstore/policy-controller/pkg/apis/policy/v1beta1"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "knative.dev/pkg/apis"
+)
+
+var (
+ // ErrEmptyDocument is the error returned when no document body is
+ // specified.
+ ErrEmptyDocument = errors.New("document is required to create policy")
+
+ // ErrUnknownType is the error returned when a type contained in the policy
+ // is unrecognized.
+ ErrUnknownType = errors.New("unknown type")
+)
+
+// Validate decodes a provided YAML document containing zero or more objects
+// and performs limited validation on them.
+func Validate(ctx context.Context, document string) (warns error, err error) {
+ if len(document) == 0 {
+ return nil, ErrEmptyDocument
+ }
+
+ uol, err := Parse(ctx, document)
+ if err != nil {
+ return nil, err
+ }
+
+ for i, uo := range uol {
+ switch uo.GroupVersionKind() {
+ case v1beta1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
+ if warns, err = validate(ctx, uo, &v1beta1.ClusterImagePolicy{}); err != nil {
+ return
+ }
+
+ case v1alpha1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
+ if warns, err = validate(ctx, uo, &v1alpha1.ClusterImagePolicy{}); err != nil {
+ return
+ }
+
+ case corev1.SchemeGroupVersion.WithKind("Secret"):
+ if uo.GetNamespace() != "cosign-system" {
+ return warns, apis.ErrInvalidValue(uo.GetNamespace(), "metadata.namespace").ViaIndex(i)
+ }
+ // Any additional validation worth performing? Should we check the
+ // schema of the secret matches the expectations of cosigned?
+
+ default:
+ return warns, fmt.Errorf("%w: %v", ErrUnknownType, uo.GroupVersionKind())
+ }
+ }
+ return warns, nil
+}
+
+type crd interface {
+ apis.Validatable
+ apis.Defaultable
+}
+
+func validate(ctx context.Context, uo *unstructured.Unstructured, v crd) (warns error, err error) {
+ b, err := json.Marshal(uo)
+ if err != nil {
+ return nil, fmt.Errorf("unable to marshal: %w", err)
+ }
+
+ dec := json.NewDecoder(bytes.NewBuffer(b))
+ dec.DisallowUnknownFields()
+ if err := dec.Decode(v); err != nil {
+ return nil, fmt.Errorf("unable to unmarshal: %w", err)
+ }
+
+ // Apply defaulting to simulate the defaulting webhook that runs prior
+ // to validation.
+ v.SetDefaults(ctx)
+
+ // We can't just return v.Validate(ctx) because of Go's typed nils.
+ // nolint:revive
+ if ve := v.Validate(ctx); ve != nil {
+ // Separate validation warnings from errors so the caller can discern between them.
+ if warnFE := ve.Filter(apis.WarningLevel); warnFE != nil {
+ warns = warnFE
+ }
+ if errorFE := ve.Filter(apis.ErrorLevel); errorFE != nil {
+ err = errorFE
+ }
+ }
+ return
+}
diff --git a/policy/validate_test.go b/policy/validate_test.go
new file mode 100644
index 00000000..15df0a31
--- /dev/null
+++ b/policy/validate_test.go
@@ -0,0 +1,194 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package policy
+
+import (
+ "context"
+ "errors"
+ "testing"
+
+ policycontrollerconfig "github.com/sigstore/policy-controller/pkg/config"
+ "knative.dev/pkg/apis"
+)
+
+func TestValidate(t *testing.T) {
+ tests := []struct {
+ name string
+ doc string
+ wantWarns error
+ wantErr error
+ allowEmptyAuthorities bool
+ }{{
+ name: "good single object",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+ authorities:
+ - keyless:
+ identities:
+ - issuer: https://issuer.example.com
+ subject: foo@example.com
+ url: https://fulcio.sigstore.dev
+`,
+ wantErr: nil,
+ }, {
+ name: "good CIP and Secret",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+ authorities:
+ - keyless:
+ identities:
+ - issuer: https://issuer.example.com
+ subject: foo@example.com
+ url: https://fulcio.sigstore.dev
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: foo
+ namespace: cosign-system
+stringData:
+ foo: bar
+`,
+ wantErr: nil,
+ }, {
+ name: "bad secret namespace",
+ doc: `
+apiVersion: v1
+kind: Secret
+metadata:
+ name: foo
+ namespace: something-system
+stringData:
+ foo: bar
+`,
+ wantErr: errors.New(`invalid value: something-system: [0].metadata.namespace`),
+ }, {
+ name: "bad image policy",
+ doc: `
+apiVersion: policy.sigstore.dev/v1alpha1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+ authorities:
+ - key: {}
+`,
+ wantErr: apis.ErrMissingOneOf("data", "kms", "secretref").ViaField("key").ViaFieldIndex("authorities", 0).ViaField("spec"),
+ }, {
+ name: "empty document",
+ doc: ``,
+ wantErr: ErrEmptyDocument,
+ }, {
+ name: "object missing kind",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+# Missing: kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec: {}
+`,
+ wantErr: errors.New(`decoding object[0]: error unmarshaling JSON: while decoding JSON: Object 'Kind' is missing in '{"apiVersion":"policy.sigstore.dev/v1beta1","metadata":{"name":"blah"},"spec":{}}'`),
+ }, {
+ name: "unknown field",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ asdf: dfsadf
+`,
+ wantErr: errors.New(`unable to unmarshal: json: unknown field "asdf"`),
+ }, {
+ name: "unknown type",
+ doc: `
+apiVersion: unknown.dev/v1
+kind: OtherPolicy
+metadata:
+ name: blah
+spec: {}
+`,
+ wantErr: errors.New(`unknown type: unknown.dev/v1, Kind=OtherPolicy`),
+ }, {
+ name: "error - missing field",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+ authorities:
+ - keyless:
+ url: https://fulcio.sigstore.dev
+`,
+ wantWarns: nil,
+ wantErr: errors.New("missing field(s): spec.authorities[0].keyless.identities"),
+ },
+ {
+ name: "admit - missing authorities",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+`,
+ wantErr: nil,
+ allowEmptyAuthorities: true,
+ }, {
+ name: "deny - missing authorities",
+ doc: `
+apiVersion: policy.sigstore.dev/v1beta1
+kind: ClusterImagePolicy
+metadata:
+ name: blah
+spec:
+ images:
+ - glob: '*'
+`,
+ wantErr: errors.New("missing field(s): spec.authorities"),
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ testContext := context.Background()
+ if test.allowEmptyAuthorities {
+ testContext = policycontrollerconfig.ToContext(testContext, &policycontrollerconfig.PolicyControllerConfig{FailOnEmptyAuthorities: false})
+ }
+ gotWarns, gotErr := Validate(testContext, test.doc)
+ if (gotErr != nil) != (test.wantErr != nil) {
+ t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
+ }
+ if (gotWarns != nil) != (test.wantWarns != nil) {
+ t.Fatalf("Parse() = %v, wanted %v", gotWarns, test.wantWarns)
+ }
+ if gotErr != nil && gotErr.Error() != test.wantErr.Error() {
+ t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
+ }
+ if gotWarns != nil && gotWarns.Error() != test.wantWarns.Error() {
+ t.Fatalf("Parse() = %v, wanted %v", gotWarns, test.wantWarns)
+ }
+ })
+ }
+}
diff --git a/proto/annotations/auth.pb.go b/proto/annotations/auth.pb.go
new file mode 100644
index 00000000..a7aeace6
--- /dev/null
+++ b/proto/annotations/auth.pb.go
@@ -0,0 +1,342 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: auth.proto
+
+package annotations
+
+import (
+ capabilities "chainguard.dev/sdk/proto/capabilities"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type IAM struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Mode:
+ //
+ // *IAM_Disabled
+ // *IAM_Enabled
+ Mode isIAM_Mode `protobuf_oneof:"mode"`
+}
+
+func (x *IAM) Reset() {
+ *x = IAM{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IAM) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IAM) ProtoMessage() {}
+
+func (x *IAM) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IAM.ProtoReflect.Descriptor instead.
+func (*IAM) Descriptor() ([]byte, []int) {
+ return file_auth_proto_rawDescGZIP(), []int{0}
+}
+
+func (m *IAM) GetMode() isIAM_Mode {
+ if m != nil {
+ return m.Mode
+ }
+ return nil
+}
+
+func (x *IAM) GetDisabled() *emptypb.Empty {
+ if x, ok := x.GetMode().(*IAM_Disabled); ok {
+ return x.Disabled
+ }
+ return nil
+}
+
+func (x *IAM) GetEnabled() *IAM_Rules {
+ if x, ok := x.GetMode().(*IAM_Enabled); ok {
+ return x.Enabled
+ }
+ return nil
+}
+
+type isIAM_Mode interface {
+ isIAM_Mode()
+}
+
+type IAM_Disabled struct {
+ Disabled *emptypb.Empty `protobuf:"bytes,1,opt,name=disabled,proto3,oneof"`
+}
+
+type IAM_Enabled struct {
+ Enabled *IAM_Rules `protobuf:"bytes,2,opt,name=enabled,proto3,oneof"`
+}
+
+func (*IAM_Disabled) isIAM_Mode() {}
+
+func (*IAM_Enabled) isIAM_Mode() {}
+
+type IAM_Rules struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // A list of capabilities required by a particular API.
+ // This field is either scoped or unscoped, as determined
+ // by the field below.
+ // - When it is "scoped", this field is combined with the
+ // field designated by "(iam_scope) = true" (see below)
+ // on the request message to indicate what capabilities
+ // the caller needs at what scope in order to authorize
+ // the action they are performing.
+ // - When is it "unscoped", this field is used to determine
+ // the set of scopes the caller has the appropriate access
+ // to so that the RPC itself can scope down the results
+ // it returns.
+ Capabilities []capabilities.Capability `protobuf:"varint,1,rep,packed,name=capabilities,proto3,enum=chainguard.capabilities.Capability" json:"capabilities,omitempty"`
+ // Unscoped is set on APIs where the request itself doesn't
+ // carry a field with "iam_scope", and instead scopes itself
+ // to the set of groups to which the caller has access
+ // according to their OIDC token.
+ Unscoped bool `protobuf:"varint,2,opt,name=unscoped,proto3" json:"unscoped,omitempty"`
+}
+
+func (x *IAM_Rules) Reset() {
+ *x = IAM_Rules{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IAM_Rules) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IAM_Rules) ProtoMessage() {}
+
+func (x *IAM_Rules) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IAM_Rules.ProtoReflect.Descriptor instead.
+func (*IAM_Rules) Descriptor() ([]byte, []int) {
+ return file_auth_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *IAM_Rules) GetCapabilities() []capabilities.Capability {
+ if x != nil {
+ return x.Capabilities
+ }
+ return nil
+}
+
+func (x *IAM_Rules) GetUnscoped() bool {
+ if x != nil {
+ return x.Unscoped
+ }
+ return false
+}
+
+var file_auth_proto_extTypes = []protoimpl.ExtensionInfo{
+ {
+ ExtendedType: (*descriptorpb.MethodOptions)(nil),
+ ExtensionType: (*IAM)(nil),
+ Field: 189350641,
+ Name: "chainguard.annotations.iam",
+ Tag: "bytes,189350641,opt,name=iam",
+ Filename: "auth.proto",
+ },
+ {
+ ExtendedType: (*descriptorpb.FieldOptions)(nil),
+ ExtensionType: (*bool)(nil),
+ Field: 189350642,
+ Name: "chainguard.annotations.iam_scope",
+ Tag: "varint,189350642,opt,name=iam_scope",
+ Filename: "auth.proto",
+ },
+}
+
+// Extension fields to descriptorpb.MethodOptions.
+var (
+ // optional chainguard.annotations.IAM iam = 189350641;
+ E_Iam = &file_auth_proto_extTypes[0] // randomly chosen
+)
+
+// Extension fields to descriptorpb.FieldOptions.
+var (
+ // optional bool iam_scope = 189350642;
+ E_IamScope = &file_auth_proto_extTypes[1] // one more than above
+)
+
+var File_auth_proto protoreflect.FileDescriptor
+
+var file_auth_proto_rawDesc = []byte{
+ 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
+ 0x73, 0x2f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf0, 0x01, 0x0a, 0x03, 0x49, 0x41, 0x4d, 0x12, 0x34, 0x0a, 0x08,
+ 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x41, 0x4d,
+ 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+ 0x64, 0x1a, 0x6c, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61,
+ 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e,
+ 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63, 0x61,
+ 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x64, 0x42,
+ 0x06, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x50, 0x0a, 0x03, 0x69, 0x61, 0x6d, 0x12, 0x1e,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf1,
+ 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x49, 0x41, 0x4d, 0x52, 0x03, 0x69, 0x61, 0x6d, 0x3a, 0x3d, 0x0a, 0x09, 0x69, 0x61, 0x6d,
+ 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf2, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
+ 0x69, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x5a, 0x0a, 0x1e, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x41, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_auth_proto_rawDescOnce sync.Once
+ file_auth_proto_rawDescData = file_auth_proto_rawDesc
+)
+
+func file_auth_proto_rawDescGZIP() []byte {
+ file_auth_proto_rawDescOnce.Do(func() {
+ file_auth_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_proto_rawDescData)
+ })
+ return file_auth_proto_rawDescData
+}
+
+var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_auth_proto_goTypes = []interface{}{
+ (*IAM)(nil), // 0: chainguard.annotations.IAM
+ (*IAM_Rules)(nil), // 1: chainguard.annotations.IAM.Rules
+ (*emptypb.Empty)(nil), // 2: google.protobuf.Empty
+ (capabilities.Capability)(0), // 3: chainguard.capabilities.Capability
+ (*descriptorpb.MethodOptions)(nil), // 4: google.protobuf.MethodOptions
+ (*descriptorpb.FieldOptions)(nil), // 5: google.protobuf.FieldOptions
+}
+var file_auth_proto_depIdxs = []int32{
+ 2, // 0: chainguard.annotations.IAM.disabled:type_name -> google.protobuf.Empty
+ 1, // 1: chainguard.annotations.IAM.enabled:type_name -> chainguard.annotations.IAM.Rules
+ 3, // 2: chainguard.annotations.IAM.Rules.capabilities:type_name -> chainguard.capabilities.Capability
+ 4, // 3: chainguard.annotations.iam:extendee -> google.protobuf.MethodOptions
+ 5, // 4: chainguard.annotations.iam_scope:extendee -> google.protobuf.FieldOptions
+ 0, // 5: chainguard.annotations.iam:type_name -> chainguard.annotations.IAM
+ 6, // [6:6] is the sub-list for method output_type
+ 6, // [6:6] is the sub-list for method input_type
+ 5, // [5:6] is the sub-list for extension type_name
+ 3, // [3:5] is the sub-list for extension extendee
+ 0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_auth_proto_init() }
+func file_auth_proto_init() {
+ if File_auth_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_auth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IAM); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_auth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IAM_Rules); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_auth_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*IAM_Disabled)(nil),
+ (*IAM_Enabled)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_auth_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 2,
+ NumExtensions: 2,
+ NumServices: 0,
+ },
+ GoTypes: file_auth_proto_goTypes,
+ DependencyIndexes: file_auth_proto_depIdxs,
+ MessageInfos: file_auth_proto_msgTypes,
+ ExtensionInfos: file_auth_proto_extTypes,
+ }.Build()
+ File_auth_proto = out.File
+ file_auth_proto_rawDesc = nil
+ file_auth_proto_goTypes = nil
+ file_auth_proto_depIdxs = nil
+}
diff --git a/proto/annotations/auth.proto b/proto/annotations/auth.proto
new file mode 100644
index 00000000..99f29d9e
--- /dev/null
+++ b/proto/annotations/auth.proto
@@ -0,0 +1,49 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/annotations";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.annotations";
+option java_outer_classname = "AnnotationsProto";
+
+package chainguard.annotations;
+
+import "google/protobuf/descriptor.proto";
+import "google/protobuf/empty.proto";
+import "capabilities/capabilities.proto";
+
+extend google.protobuf.MethodOptions {
+ IAM iam = 189350641; // randomly chosen
+}
+
+message IAM {
+ oneof mode {
+ google.protobuf.Empty disabled = 1;
+ Rules enabled = 2;
+ }
+
+ message Rules {
+ // A list of capabilities required by a particular API.
+ // This field is either scoped or unscoped, as determined
+ // by the field below.
+ // * When it is "scoped", this field is combined with the
+ // field designated by "(iam_scope) = true" (see below)
+ // on the request message to indicate what capabilities
+ // the caller needs at what scope in order to authorize
+ // the action they are performing.
+ // * When is it "unscoped", this field is used to determine
+ // the set of scopes the caller has the appropriate access
+ // to so that the RPC itself can scope down the results
+ // it returns.
+ repeated chainguard.capabilities.Capability capabilities = 1;
+
+ // Unscoped is set on APIs where the request itself doesn't
+ // carry a field with "iam_scope", and instead scopes itself
+ // to the set of groups to which the caller has access
+ // according to their OIDC token.
+ bool unscoped = 2;
+ }
+}
+
+extend google.protobuf.FieldOptions {
+ bool iam_scope = 189350642; // one more than above
+}
diff --git a/proto/annotations/doc.go b/proto/annotations/doc.go
new file mode 100644
index 00000000..3c5444ee
--- /dev/null
+++ b/proto/annotations/doc.go
@@ -0,0 +1,11 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package accounts contains the GRPC client and server definitions
+// for implementing Auth interactions for the Console.
+//
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. auth.proto
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. events.proto
+package annotations
diff --git a/proto/annotations/events.pb.go b/proto/annotations/events.pb.go
new file mode 100644
index 00000000..f04beef8
--- /dev/null
+++ b/proto/annotations/events.pb.go
@@ -0,0 +1,258 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: events.proto
+
+package annotations
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type EventAttributes_Audience int32
+
+const (
+ // intended for inside the bounds of the platform.
+ EventAttributes_INTERNAL EventAttributes_Audience = 0
+ // allowed to be sent outside the platform.
+ EventAttributes_CUSTOMER EventAttributes_Audience = 1
+)
+
+// Enum value maps for EventAttributes_Audience.
+var (
+ EventAttributes_Audience_name = map[int32]string{
+ 0: "INTERNAL",
+ 1: "CUSTOMER",
+ }
+ EventAttributes_Audience_value = map[string]int32{
+ "INTERNAL": 0,
+ "CUSTOMER": 1,
+ }
+)
+
+func (x EventAttributes_Audience) Enum() *EventAttributes_Audience {
+ p := new(EventAttributes_Audience)
+ *p = x
+ return p
+}
+
+func (x EventAttributes_Audience) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EventAttributes_Audience) Descriptor() protoreflect.EnumDescriptor {
+ return file_events_proto_enumTypes[0].Descriptor()
+}
+
+func (EventAttributes_Audience) Type() protoreflect.EnumType {
+ return &file_events_proto_enumTypes[0]
+}
+
+func (x EventAttributes_Audience) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventAttributes_Audience.Descriptor instead.
+func (EventAttributes_Audience) EnumDescriptor() ([]byte, []int) {
+ return file_events_proto_rawDescGZIP(), []int{0, 0}
+}
+
+type EventAttributes struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // type is the cloudevent type to use for the outbound event.
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ // extensions lists which extensions
+ Extensions []string `protobuf:"bytes,2,rep,name=extensions,proto3" json:"extensions,omitempty"`
+ // audience is the intended audience for the event.
+ Audience EventAttributes_Audience `protobuf:"varint,3,opt,name=audience,proto3,enum=chainguard.annotations.EventAttributes_Audience" json:"audience,omitempty"`
+}
+
+func (x *EventAttributes) Reset() {
+ *x = EventAttributes{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_events_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *EventAttributes) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventAttributes) ProtoMessage() {}
+
+func (x *EventAttributes) ProtoReflect() protoreflect.Message {
+ mi := &file_events_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventAttributes.ProtoReflect.Descriptor instead.
+func (*EventAttributes) Descriptor() ([]byte, []int) {
+ return file_events_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *EventAttributes) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *EventAttributes) GetExtensions() []string {
+ if x != nil {
+ return x.Extensions
+ }
+ return nil
+}
+
+func (x *EventAttributes) GetAudience() EventAttributes_Audience {
+ if x != nil {
+ return x.Audience
+ }
+ return EventAttributes_INTERNAL
+}
+
+var file_events_proto_extTypes = []protoimpl.ExtensionInfo{
+ {
+ ExtendedType: (*descriptorpb.MethodOptions)(nil),
+ ExtensionType: (*EventAttributes)(nil),
+ Field: 401635080,
+ Name: "chainguard.annotations.events",
+ Tag: "bytes,401635080,opt,name=events",
+ Filename: "events.proto",
+ },
+}
+
+// Extension fields to descriptorpb.MethodOptions.
+var (
+ // optional chainguard.annotations.EventAttributes events = 401635080;
+ E_Events = &file_events_proto_extTypes[0] // randomly chosen
+)
+
+var File_events_proto protoreflect.FileDescriptor
+
+var file_events_proto_rawDesc = []byte{
+ 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+ 0x12, 0x4c, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69,
+ 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x26,
+ 0x0a, 0x08, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e,
+ 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x55, 0x53, 0x54,
+ 0x4f, 0x4d, 0x45, 0x52, 0x10, 0x01, 0x3a, 0x63, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x88, 0xee, 0xc1, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x65, 0x73, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x5a, 0x0a, 0x1e, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
+ 0x6b, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x41,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
+ 0x01, 0x5a, 0x24, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
+ 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_events_proto_rawDescOnce sync.Once
+ file_events_proto_rawDescData = file_events_proto_rawDesc
+)
+
+func file_events_proto_rawDescGZIP() []byte {
+ file_events_proto_rawDescOnce.Do(func() {
+ file_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_events_proto_rawDescData)
+ })
+ return file_events_proto_rawDescData
+}
+
+var file_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_events_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_events_proto_goTypes = []interface{}{
+ (EventAttributes_Audience)(0), // 0: chainguard.annotations.EventAttributes.Audience
+ (*EventAttributes)(nil), // 1: chainguard.annotations.EventAttributes
+ (*descriptorpb.MethodOptions)(nil), // 2: google.protobuf.MethodOptions
+}
+var file_events_proto_depIdxs = []int32{
+ 0, // 0: chainguard.annotations.EventAttributes.audience:type_name -> chainguard.annotations.EventAttributes.Audience
+ 2, // 1: chainguard.annotations.events:extendee -> google.protobuf.MethodOptions
+ 1, // 2: chainguard.annotations.events:type_name -> chainguard.annotations.EventAttributes
+ 3, // [3:3] is the sub-list for method output_type
+ 3, // [3:3] is the sub-list for method input_type
+ 2, // [2:3] is the sub-list for extension type_name
+ 1, // [1:2] is the sub-list for extension extendee
+ 0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_events_proto_init() }
+func file_events_proto_init() {
+ if File_events_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EventAttributes); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_events_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 1,
+ NumExtensions: 1,
+ NumServices: 0,
+ },
+ GoTypes: file_events_proto_goTypes,
+ DependencyIndexes: file_events_proto_depIdxs,
+ EnumInfos: file_events_proto_enumTypes,
+ MessageInfos: file_events_proto_msgTypes,
+ ExtensionInfos: file_events_proto_extTypes,
+ }.Build()
+ File_events_proto = out.File
+ file_events_proto_rawDesc = nil
+ file_events_proto_goTypes = nil
+ file_events_proto_depIdxs = nil
+}
diff --git a/proto/annotations/events.proto b/proto/annotations/events.proto
new file mode 100644
index 00000000..f2d0839f
--- /dev/null
+++ b/proto/annotations/events.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/annotations";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.annotations";
+option java_outer_classname = "AnnotationsProto";
+
+package chainguard.annotations;
+
+import "google/protobuf/descriptor.proto";
+
+extend google.protobuf.MethodOptions {
+ EventAttributes events = 401635080; // randomly chosen
+}
+
+message EventAttributes {
+ // type is the cloudevent type to use for the outbound event.
+ string type = 1;
+ // extensions lists which extensions
+ repeated string extensions = 2;
+ enum Audience {
+ // intended for inside the bounds of the platform.
+ INTERNAL = 0;
+ // allowed to be sent outside the platform.
+ CUSTOMER = 1;
+ }
+ // audience is the intended audience for the event.
+ Audience audience = 3;
+}
diff --git a/proto/capabilities/capabilities.go b/proto/capabilities/capabilities.go
new file mode 100644
index 00000000..71e89e01
--- /dev/null
+++ b/proto/capabilities/capabilities.go
@@ -0,0 +1,189 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package capabilities
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "io"
+ "sort"
+ "strings"
+ "sync"
+
+ "github.com/bits-and-blooms/bitset"
+ "github.com/chainguard-dev/clog"
+ "go.uber.org/zap"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/types/descriptorpb"
+)
+
+var (
+ // Map of stringified name to capability. Initialized with initNameCapabilityMap()
+ nameCapabilityMap = make(map[string]Capability, len(Capability_value))
+ ponce sync.Once
+ perror error
+)
+
+// Names returns a slice of all capabilities Stringify'd, sans UNKNOWN.
+func Names() []string {
+ all := make([]string, 0, len(Capability_name)-1) // One less, we don't want UNKNOWN
+ for n := range Capability_name {
+ if Capability(n) == Capability_UNKNOWN {
+ continue
+ }
+ sc, err := Stringify(Capability(n))
+ if err != nil {
+ // This should never happen!
+ continue
+ }
+ all = append(all, sc)
+ }
+ return all
+}
+
+func Stringify(cap Capability) (string, error) {
+ evd := cap.Descriptor().Values().ByNumber(cap.Number())
+ if evd == nil {
+ return "", status.Errorf(codes.Internal, "capability has no descriptor: %v", cap)
+ }
+ opt := evd.Options()
+ if opt == nil {
+ return "", status.Errorf(codes.Internal, "capability has no options: %v", cap)
+ }
+ evo := opt.(*descriptorpb.EnumValueOptions)
+ name := proto.GetExtension(evo, E_Name)
+ if name == nil {
+ return "", status.Errorf(codes.Internal, "capability is missing the name option: %v", cap)
+ }
+ return name.(string), nil
+}
+
+func StringifyAll(caps []Capability) ([]string, error) {
+ scs := make([]string, 0, len(caps))
+ for _, cap := range caps {
+ sc, err := Stringify(cap)
+ if err != nil {
+ return nil, err
+ }
+ scs = append(scs, sc)
+ }
+ return scs, nil
+}
+
+func Parse(name string) (Capability, error) {
+ ponce.Do(func() {
+ // Populate nameCapabilityMap
+ for cap := range Capability_name {
+ scap, perror := Stringify(Capability(cap))
+ if perror == nil {
+ nameCapabilityMap[scap] = Capability(cap)
+ } else {
+ clog.FromContext(context.Background()).Errorf("Failed to stringify capability %d, error: %v",
+ cap, zap.Error(perror))
+ }
+ }
+ })
+
+ if perror != nil {
+ return Capability_UNKNOWN, perror
+ }
+ return nameCapabilityMap[name], nil
+}
+
+func Bitify(cap Capability) (uint32, error) {
+ evd := cap.Descriptor().Values().ByNumber(cap.Number())
+ if evd == nil {
+ return 0, status.Errorf(codes.Internal, "capability has no descriptor: %v", cap)
+ }
+ opt := evd.Options()
+ if opt == nil {
+ return 0, status.Errorf(codes.Internal, "capability has no options: %v", cap)
+ }
+ evo := opt.(*descriptorpb.EnumValueOptions)
+ name := proto.GetExtension(evo, E_Bit)
+ if name == nil {
+ return 0, status.Errorf(codes.Internal, "capability is missing the bit option: %v", cap)
+ }
+ return name.(uint32), nil
+}
+
+// Set performs efficient encoding of a list of capabilities.
+type Set []Capability
+
+func (s Set) String() string {
+ caps := make([]string, 0, len(s))
+ for _, c := range s {
+ st, err := Stringify(c)
+ if err != nil {
+ st = fmt.Sprintf("[ERROR(cap=%d)", c)
+ }
+ caps = append(caps, st)
+ }
+ sort.Strings(caps)
+ return strings.Join(caps, ",")
+}
+
+// MarshalJSON implements json.Marshaler
+func (s Set) MarshalJSON() ([]byte, error) {
+ bs := bitset.New(50)
+ for _, cap := range s {
+ b, err := Bitify(cap)
+ if err != nil {
+ return nil, err
+ }
+ bs.Set(uint(b))
+ }
+ return bs.MarshalJSON()
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (s *Set) UnmarshalJSON(b []byte) error {
+ switch {
+ case len(b) == 0:
+ return io.EOF
+
+ case b[0] == '[':
+ // Legacy decoding!
+ var caps []Capability
+ if err := json.Unmarshal(b, &caps); err != nil {
+ return err
+ }
+ for _, cap := range caps {
+ *s = append(*s, cap)
+ }
+ return nil
+
+ default:
+ // Compact encoding
+ var bs bitset.BitSet
+ if err := json.Unmarshal(b, &bs); err != nil {
+ return err
+ }
+ for i := range Capability_name {
+ cap := Capability(i) //nolint: revive
+ if cap == Capability_UNKNOWN {
+ continue
+ }
+ bit, err := Bitify(cap)
+ if err != nil {
+ return err
+ }
+ if bs.Test(uint(bit)) {
+ *s = append(*s, cap)
+ // This ensures that our unit testing checks that no two
+ // enumeration values are assigned the same bit.
+ bs.Clear(uint(bit))
+ }
+ }
+ sort.Slice(*s, func(i int, j int) bool {
+ return (*s)[i] < (*s)[j]
+ })
+ return nil
+ }
+}
diff --git a/proto/capabilities/capabilities.pb.go b/proto/capabilities/capabilities.pb.go
new file mode 100644
index 00000000..344a7418
--- /dev/null
+++ b/proto/capabilities/capabilities.pb.go
@@ -0,0 +1,661 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: capabilities.proto
+
+package capabilities
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+// Capability is an enumeration of the Chainguard IAM capabilities.
+type Capability int32
+
+const (
+ Capability_UNKNOWN Capability = 0
+ Capability_CAP_IAM_GROUPS_CREATE Capability = 101
+ Capability_CAP_IAM_GROUPS_UPDATE Capability = 102
+ Capability_CAP_IAM_GROUPS_LIST Capability = 103
+ Capability_CAP_IAM_GROUPS_DELETE Capability = 104
+ Capability_CAP_IAM_GROUP_INVITES_CREATE Capability = 201
+ Capability_CAP_IAM_GROUP_INVITES_LIST Capability = 203
+ Capability_CAP_IAM_GROUP_INVITES_DELETE Capability = 204
+ Capability_CAP_IAM_ROLES_CREATE Capability = 301
+ Capability_CAP_IAM_ROLES_UPDATE Capability = 302
+ Capability_CAP_IAM_ROLES_LIST Capability = 303
+ Capability_CAP_IAM_ROLES_DELETE Capability = 304
+ Capability_CAP_IAM_ROLE_BINDINGS_CREATE Capability = 401
+ Capability_CAP_IAM_ROLE_BINDINGS_UPDATE Capability = 402
+ Capability_CAP_IAM_ROLE_BINDINGS_LIST Capability = 403
+ Capability_CAP_IAM_ROLE_BINDINGS_DELETE Capability = 404
+ Capability_CAP_TENANT_CLUSTERS_CREATE Capability = 501
+ Capability_CAP_TENANT_CLUSTERS_UPDATE Capability = 502
+ Capability_CAP_TENANT_CLUSTERS_LIST Capability = 503
+ Capability_CAP_TENANT_CLUSTERS_DELETE Capability = 504
+ Capability_CAP_TENANT_CLUSTERS_DISCOVER Capability = 505
+ Capability_CAP_TENANT_RECORDS_LIST Capability = 603
+ Capability_CAP_TENANT_RECORD_CONTEXTS_LIST Capability = 613
+ Capability_CAP_TENANT_RECORD_SIGNATURES_LIST Capability = 623
+ Capability_CAP_TENANT_RECORD_POLICY_RESULTS_LIST Capability = 633
+ Capability_CAP_TENANT_RISKS_LIST Capability = 640
+ Capability_CAP_TENANT_SBOMS_LIST Capability = 650
+ Capability_CAP_TENANT_VULN_REPORTS_LIST Capability = 660
+ Capability_CAP_TENANT_ATTESTATIONS_LIST Capability = 670
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE Capability = 701
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE Capability = 702
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST Capability = 703
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE Capability = 704
+ Capability_CAP_IAM_POLICY_CREATE Capability = 801
+ Capability_CAP_IAM_POLICY_UPDATE Capability = 802
+ Capability_CAP_IAM_POLICY_LIST Capability = 803
+ Capability_CAP_IAM_POLICY_DELETE Capability = 804
+ Capability_CAP_IAM_IDENTITY_CREATE Capability = 901
+ Capability_CAP_IAM_IDENTITY_UPDATE Capability = 902
+ Capability_CAP_IAM_IDENTITY_LIST Capability = 903
+ Capability_CAP_IAM_IDENTITY_DELETE Capability = 904
+ Capability_CAP_TENANT_NODES_LIST Capability = 1003
+ Capability_CAP_TENANT_NAMESPACES_LIST Capability = 1103
+ Capability_CAP_TENANT_WORKLOADS_LIST Capability = 1203
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_CREATE Capability = 1301
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_UPDATE Capability = 1302
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_LIST Capability = 1303
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_DELETE Capability = 1304
+ Capability_CAP_EVENTS_SUBSCRIPTION_CREATE Capability = 1501
+ Capability_CAP_EVENTS_SUBSCRIPTION_UPDATE Capability = 1502
+ Capability_CAP_EVENTS_SUBSCRIPTION_LIST Capability = 1503
+ Capability_CAP_EVENTS_SUBSCRIPTION_DELETE Capability = 1504
+ // TODO(jason): Remove these coarse-grained capabilities after they're removed from the roles.
+ Capability_CAP_REGISTRY_PULL Capability = 1601 // Can read tags, blobs, manifests.
+ Capability_CAP_REGISTRY_PUSH Capability = 1602 // Can create and update tags, blobs, manifests.
+ Capability_CAP_REPO_CREATE Capability = 1603
+ Capability_CAP_REPO_UPDATE Capability = 1604
+ Capability_CAP_REPO_LIST Capability = 1605
+ Capability_CAP_REPO_DELETE Capability = 1606
+ Capability_CAP_MANIFEST_CREATE Capability = 1607
+ Capability_CAP_MANIFEST_UPDATE Capability = 1608
+ Capability_CAP_MANIFEST_LIST Capability = 1609
+ Capability_CAP_MANIFEST_DELETE Capability = 1610
+ Capability_CAP_TAG_CREATE Capability = 1611
+ Capability_CAP_TAG_UPDATE Capability = 1612
+ Capability_CAP_TAG_LIST Capability = 1613
+ Capability_CAP_TAG_DELETE Capability = 1614
+ Capability_CAP_SIGSTORE_CREATE Capability = 1701
+ Capability_CAP_SIGSTORE_UPDATE Capability = 1702
+ Capability_CAP_SIGSTORE_LIST Capability = 1703
+ Capability_CAP_SIGSTORE_DELETE Capability = 1704
+ Capability_CAP_SIGSTORE_CERTIFICATE_CREATE Capability = 1705
+ // This is orthogonal enough that we should leave
+ // it somewhat separate, so add new capabilities above.
+ // TODO(mattmoor): Think about whether we can encode specific
+ // controller capabilities into our access control here?
+ // e.g. could each logical controller/webhook be its own
+ // capability?
+ Capability_CAP_GULFSTREAM Capability = 10000
+)
+
+// Enum value maps for Capability.
+var (
+ Capability_name = map[int32]string{
+ 0: "UNKNOWN",
+ 101: "CAP_IAM_GROUPS_CREATE",
+ 102: "CAP_IAM_GROUPS_UPDATE",
+ 103: "CAP_IAM_GROUPS_LIST",
+ 104: "CAP_IAM_GROUPS_DELETE",
+ 201: "CAP_IAM_GROUP_INVITES_CREATE",
+ 203: "CAP_IAM_GROUP_INVITES_LIST",
+ 204: "CAP_IAM_GROUP_INVITES_DELETE",
+ 301: "CAP_IAM_ROLES_CREATE",
+ 302: "CAP_IAM_ROLES_UPDATE",
+ 303: "CAP_IAM_ROLES_LIST",
+ 304: "CAP_IAM_ROLES_DELETE",
+ 401: "CAP_IAM_ROLE_BINDINGS_CREATE",
+ 402: "CAP_IAM_ROLE_BINDINGS_UPDATE",
+ 403: "CAP_IAM_ROLE_BINDINGS_LIST",
+ 404: "CAP_IAM_ROLE_BINDINGS_DELETE",
+ 501: "CAP_TENANT_CLUSTERS_CREATE",
+ 502: "CAP_TENANT_CLUSTERS_UPDATE",
+ 503: "CAP_TENANT_CLUSTERS_LIST",
+ 504: "CAP_TENANT_CLUSTERS_DELETE",
+ 505: "CAP_TENANT_CLUSTERS_DISCOVER",
+ 603: "CAP_TENANT_RECORDS_LIST",
+ 613: "CAP_TENANT_RECORD_CONTEXTS_LIST",
+ 623: "CAP_TENANT_RECORD_SIGNATURES_LIST",
+ 633: "CAP_TENANT_RECORD_POLICY_RESULTS_LIST",
+ 640: "CAP_TENANT_RISKS_LIST",
+ 650: "CAP_TENANT_SBOMS_LIST",
+ 660: "CAP_TENANT_VULN_REPORTS_LIST",
+ 670: "CAP_TENANT_ATTESTATIONS_LIST",
+ 701: "CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE",
+ 702: "CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE",
+ 703: "CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST",
+ 704: "CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE",
+ 801: "CAP_IAM_POLICY_CREATE",
+ 802: "CAP_IAM_POLICY_UPDATE",
+ 803: "CAP_IAM_POLICY_LIST",
+ 804: "CAP_IAM_POLICY_DELETE",
+ 901: "CAP_IAM_IDENTITY_CREATE",
+ 902: "CAP_IAM_IDENTITY_UPDATE",
+ 903: "CAP_IAM_IDENTITY_LIST",
+ 904: "CAP_IAM_IDENTITY_DELETE",
+ 1003: "CAP_TENANT_NODES_LIST",
+ 1103: "CAP_TENANT_NAMESPACES_LIST",
+ 1203: "CAP_TENANT_WORKLOADS_LIST",
+ 1301: "CAP_IAM_IDENTITY_PROVIDERS_CREATE",
+ 1302: "CAP_IAM_IDENTITY_PROVIDERS_UPDATE",
+ 1303: "CAP_IAM_IDENTITY_PROVIDERS_LIST",
+ 1304: "CAP_IAM_IDENTITY_PROVIDERS_DELETE",
+ 1501: "CAP_EVENTS_SUBSCRIPTION_CREATE",
+ 1502: "CAP_EVENTS_SUBSCRIPTION_UPDATE",
+ 1503: "CAP_EVENTS_SUBSCRIPTION_LIST",
+ 1504: "CAP_EVENTS_SUBSCRIPTION_DELETE",
+ 1601: "CAP_REGISTRY_PULL",
+ 1602: "CAP_REGISTRY_PUSH",
+ 1603: "CAP_REPO_CREATE",
+ 1604: "CAP_REPO_UPDATE",
+ 1605: "CAP_REPO_LIST",
+ 1606: "CAP_REPO_DELETE",
+ 1607: "CAP_MANIFEST_CREATE",
+ 1608: "CAP_MANIFEST_UPDATE",
+ 1609: "CAP_MANIFEST_LIST",
+ 1610: "CAP_MANIFEST_DELETE",
+ 1611: "CAP_TAG_CREATE",
+ 1612: "CAP_TAG_UPDATE",
+ 1613: "CAP_TAG_LIST",
+ 1614: "CAP_TAG_DELETE",
+ 1701: "CAP_SIGSTORE_CREATE",
+ 1702: "CAP_SIGSTORE_UPDATE",
+ 1703: "CAP_SIGSTORE_LIST",
+ 1704: "CAP_SIGSTORE_DELETE",
+ 1705: "CAP_SIGSTORE_CERTIFICATE_CREATE",
+ 10000: "CAP_GULFSTREAM",
+ }
+ Capability_value = map[string]int32{
+ "UNKNOWN": 0,
+ "CAP_IAM_GROUPS_CREATE": 101,
+ "CAP_IAM_GROUPS_UPDATE": 102,
+ "CAP_IAM_GROUPS_LIST": 103,
+ "CAP_IAM_GROUPS_DELETE": 104,
+ "CAP_IAM_GROUP_INVITES_CREATE": 201,
+ "CAP_IAM_GROUP_INVITES_LIST": 203,
+ "CAP_IAM_GROUP_INVITES_DELETE": 204,
+ "CAP_IAM_ROLES_CREATE": 301,
+ "CAP_IAM_ROLES_UPDATE": 302,
+ "CAP_IAM_ROLES_LIST": 303,
+ "CAP_IAM_ROLES_DELETE": 304,
+ "CAP_IAM_ROLE_BINDINGS_CREATE": 401,
+ "CAP_IAM_ROLE_BINDINGS_UPDATE": 402,
+ "CAP_IAM_ROLE_BINDINGS_LIST": 403,
+ "CAP_IAM_ROLE_BINDINGS_DELETE": 404,
+ "CAP_TENANT_CLUSTERS_CREATE": 501,
+ "CAP_TENANT_CLUSTERS_UPDATE": 502,
+ "CAP_TENANT_CLUSTERS_LIST": 503,
+ "CAP_TENANT_CLUSTERS_DELETE": 504,
+ "CAP_TENANT_CLUSTERS_DISCOVER": 505,
+ "CAP_TENANT_RECORDS_LIST": 603,
+ "CAP_TENANT_RECORD_CONTEXTS_LIST": 613,
+ "CAP_TENANT_RECORD_SIGNATURES_LIST": 623,
+ "CAP_TENANT_RECORD_POLICY_RESULTS_LIST": 633,
+ "CAP_TENANT_RISKS_LIST": 640,
+ "CAP_TENANT_SBOMS_LIST": 650,
+ "CAP_TENANT_VULN_REPORTS_LIST": 660,
+ "CAP_TENANT_ATTESTATIONS_LIST": 670,
+ "CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE": 701,
+ "CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE": 702,
+ "CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST": 703,
+ "CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE": 704,
+ "CAP_IAM_POLICY_CREATE": 801,
+ "CAP_IAM_POLICY_UPDATE": 802,
+ "CAP_IAM_POLICY_LIST": 803,
+ "CAP_IAM_POLICY_DELETE": 804,
+ "CAP_IAM_IDENTITY_CREATE": 901,
+ "CAP_IAM_IDENTITY_UPDATE": 902,
+ "CAP_IAM_IDENTITY_LIST": 903,
+ "CAP_IAM_IDENTITY_DELETE": 904,
+ "CAP_TENANT_NODES_LIST": 1003,
+ "CAP_TENANT_NAMESPACES_LIST": 1103,
+ "CAP_TENANT_WORKLOADS_LIST": 1203,
+ "CAP_IAM_IDENTITY_PROVIDERS_CREATE": 1301,
+ "CAP_IAM_IDENTITY_PROVIDERS_UPDATE": 1302,
+ "CAP_IAM_IDENTITY_PROVIDERS_LIST": 1303,
+ "CAP_IAM_IDENTITY_PROVIDERS_DELETE": 1304,
+ "CAP_EVENTS_SUBSCRIPTION_CREATE": 1501,
+ "CAP_EVENTS_SUBSCRIPTION_UPDATE": 1502,
+ "CAP_EVENTS_SUBSCRIPTION_LIST": 1503,
+ "CAP_EVENTS_SUBSCRIPTION_DELETE": 1504,
+ "CAP_REGISTRY_PULL": 1601,
+ "CAP_REGISTRY_PUSH": 1602,
+ "CAP_REPO_CREATE": 1603,
+ "CAP_REPO_UPDATE": 1604,
+ "CAP_REPO_LIST": 1605,
+ "CAP_REPO_DELETE": 1606,
+ "CAP_MANIFEST_CREATE": 1607,
+ "CAP_MANIFEST_UPDATE": 1608,
+ "CAP_MANIFEST_LIST": 1609,
+ "CAP_MANIFEST_DELETE": 1610,
+ "CAP_TAG_CREATE": 1611,
+ "CAP_TAG_UPDATE": 1612,
+ "CAP_TAG_LIST": 1613,
+ "CAP_TAG_DELETE": 1614,
+ "CAP_SIGSTORE_CREATE": 1701,
+ "CAP_SIGSTORE_UPDATE": 1702,
+ "CAP_SIGSTORE_LIST": 1703,
+ "CAP_SIGSTORE_DELETE": 1704,
+ "CAP_SIGSTORE_CERTIFICATE_CREATE": 1705,
+ "CAP_GULFSTREAM": 10000,
+ }
+)
+
+func (x Capability) Enum() *Capability {
+ p := new(Capability)
+ *p = x
+ return p
+}
+
+func (x Capability) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Capability) Descriptor() protoreflect.EnumDescriptor {
+ return file_capabilities_proto_enumTypes[0].Descriptor()
+}
+
+func (Capability) Type() protoreflect.EnumType {
+ return &file_capabilities_proto_enumTypes[0]
+}
+
+func (x Capability) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Capability.Descriptor instead.
+func (Capability) EnumDescriptor() ([]byte, []int) {
+ return file_capabilities_proto_rawDescGZIP(), []int{0}
+}
+
+var file_capabilities_proto_extTypes = []protoimpl.ExtensionInfo{
+ {
+ ExtendedType: (*descriptorpb.EnumValueOptions)(nil),
+ ExtensionType: (*string)(nil),
+ Field: 189350643,
+ Name: "chainguard.capabilities.name",
+ Tag: "bytes,189350643,opt,name=name",
+ Filename: "capabilities.proto",
+ },
+ {
+ ExtendedType: (*descriptorpb.EnumValueOptions)(nil),
+ ExtensionType: (*uint32)(nil),
+ Field: 20221109,
+ Name: "chainguard.capabilities.bit",
+ Tag: "varint,20221109,opt,name=bit",
+ Filename: "capabilities.proto",
+ },
+}
+
+// Extension fields to descriptorpb.EnumValueOptions.
+var (
+ // This decorates our capability enumeration values with
+ // the friendly name to show to humans.
+ //
+ // optional string name = 189350643;
+ E_Name = &file_capabilities_proto_extTypes[0]
+ // This decorates our capability enumeration values with
+ // a bit index enabling compacted encodings.
+ //
+ // optional uint32 bit = 20221109;
+ E_Bit = &file_capabilities_proto_extTypes[1]
+)
+
+var File_capabilities_proto protoreflect.FileDescriptor
+
+var file_capabilities_proto_rawDesc = []byte{
+ 0x0a, 0x12, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x20, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,
+ 0x93, 0x21, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x15, 0x43,
+ 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x43, 0x52,
+ 0x45, 0x41, 0x54, 0x45, 0x10, 0x65, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x01,
+ 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55,
+ 0x50, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x66, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x02, 0x12, 0x2f, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
+ 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x67, 0x1a, 0x16,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x6c, 0x69, 0x73,
+ 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x03, 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41,
+ 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
+ 0x68, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x04, 0x12, 0x42, 0x0a, 0x1c, 0x43,
+ 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x56,
+ 0x49, 0x54, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc9, 0x01, 0x1a, 0x1f,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x05, 0x12,
+ 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
+ 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcb, 0x01,
+ 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x06, 0x12,
+ 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
+ 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
+ 0xcc, 0x01, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+ 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x07, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
+ 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xad, 0x02, 0x1a, 0x17,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x08, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10,
+ 0xae, 0x02, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x09, 0x12, 0x2e, 0x0a, 0x12, 0x43,
+ 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53,
+ 0x54, 0x10, 0xaf, 0x02, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x72, 0x6f, 0x6c, 0x65,
+ 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x0a, 0x12, 0x32, 0x0a, 0x14, 0x43,
+ 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c,
+ 0x45, 0x54, 0x45, 0x10, 0xb0, 0x02, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f,
+ 0x6c, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0b, 0x12,
+ 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f,
+ 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10,
+ 0x91, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x0c, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
+ 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x55, 0x50, 0x44,
+ 0x41, 0x54, 0x45, 0x10, 0x92, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f,
+ 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0d, 0x12, 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x93, 0x03, 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12,
+ 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6c, 0x69,
+ 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x0e, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
+ 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x94, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0f, 0x12, 0x3b, 0x0a, 0x1a, 0x43,
+ 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
+ 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xf5, 0x03, 0x1a, 0x1a, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x10, 0x12, 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f,
+ 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f,
+ 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xf6, 0x03, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x11, 0x12, 0x37, 0x0a, 0x18, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
+ 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x49, 0x53,
+ 0x54, 0x10, 0xf7, 0x03, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x12, 0x12, 0x3b,
+ 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55,
+ 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xf8, 0x03, 0x1a,
+ 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x13, 0x12, 0x3f, 0x0a, 0x1c, 0x43,
+ 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
+ 0x52, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0xf9, 0x03, 0x1a, 0x1c,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x64,
+ 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0xa8, 0xcb, 0x91, 0x4d, 0x33, 0x12, 0x35, 0x0a, 0x17,
+ 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52,
+ 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x04, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x14, 0x12, 0x45, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e,
+ 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54,
+ 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe5, 0x04, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x14, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73,
+ 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x30, 0x12, 0x49, 0x0a, 0x21, 0x43, 0x41,
+ 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f,
+ 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
+ 0xef, 0x04, 0x1a, 0x21, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
+ 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x31, 0x12, 0x51, 0x0a, 0x25, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
+ 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43,
+ 0x59, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf9,
+ 0x04, 0x1a, 0x25, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x6c,
+ 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x32, 0x12, 0x31, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f,
+ 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x53, 0x5f, 0x4c, 0x49, 0x53,
+ 0x54, 0x10, 0x80, 0x05, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x72, 0x69, 0x73, 0x6b,
+ 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x44, 0x12, 0x31, 0x0a, 0x15, 0x43,
+ 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x53, 0x42, 0x4f, 0x4d, 0x53, 0x5f,
+ 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8a, 0x05, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x73,
+ 0x62, 0x6f, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x45, 0x12, 0x3f,
+ 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x56, 0x55, 0x4c,
+ 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x94,
+ 0x05, 0x1a, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x76, 0x75, 0x6c, 0x6e, 0x5f, 0x72, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x46, 0x12,
+ 0x3f, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x54,
+ 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
+ 0x9e, 0x05, 0x1a, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x47,
+ 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43, 0x43, 0x4f,
+ 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53,
+ 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xbd, 0x05, 0x1a, 0x26, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x15, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xbe, 0x05, 0x1a, 0x26, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
+ 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8,
+ 0xcb, 0x91, 0x4d, 0x16, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
+ 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbf, 0x05, 0x1a, 0x24, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
+ 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x17, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc0, 0x05, 0x1a, 0x26, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
+ 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8,
+ 0xcb, 0x91, 0x4d, 0x18, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
+ 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa1, 0x06,
+ 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x19, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41,
+ 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44,
+ 0x41, 0x54, 0x45, 0x10, 0xa2, 0x06, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1a,
+ 0x12, 0x30, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49,
+ 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa3, 0x06, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x1b, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f,
+ 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa4, 0x06, 0x1a, 0x18,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1c, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f,
+ 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x52, 0x45,
+ 0x41, 0x54, 0x45, 0x10, 0x85, 0x07, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x1d, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
+ 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x86, 0x07,
+ 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1e, 0x12, 0x34, 0x0a, 0x15,
+ 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x87, 0x07, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x1f, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
+ 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x88, 0x07,
+ 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x20, 0x12, 0x31, 0x0a, 0x15,
+ 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x07, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a,
+ 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x21, 0x12,
+ 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x41,
+ 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x08,
+ 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x22, 0x12, 0x39, 0x0a, 0x19,
+ 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
+ 0x4f, 0x41, 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb3, 0x09, 0x1a, 0x19, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x6c, 0x69,
+ 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x23, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56,
+ 0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x95, 0x0a, 0x1a,
+ 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
+ 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x34, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
+ 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44,
+ 0x45, 0x52, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x96, 0x0a, 0x1a, 0x24, 0x9a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x35, 0x12, 0x48, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49,
+ 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52,
+ 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x97, 0x0a, 0x1a, 0x22, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x36, 0x12, 0x4c, 0x0a,
+ 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54,
+ 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45,
+ 0x54, 0x45, 0x10, 0x98, 0x0a, 0x1a, 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x37, 0x12, 0x44, 0x0a, 0x1e, 0x43,
+ 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
+ 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x0b,
+ 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x24, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f,
+ 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44,
+ 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75,
+ 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x25, 0x12, 0x40, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x45,
+ 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdf, 0x0b, 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x26, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50,
+ 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xe0, 0x0b, 0x1a, 0x1f,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x27, 0x12,
+ 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f,
+ 0x50, 0x55, 0x4c, 0x4c, 0x10, 0xc1, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x6c, 0x6c, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x28, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52,
+ 0x59, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0xc2, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x73, 0x68, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x29, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f,
+ 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc3, 0x0c, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x38, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x55, 0x50,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xc4, 0x0c, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72,
+ 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x39, 0x12,
+ 0x28, 0x0a, 0x0d, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x4c, 0x49, 0x53, 0x54,
+ 0x10, 0xc5, 0x0c, 0x1a, 0x14, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x2e,
+ 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x3a, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50,
+ 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc6, 0x0c, 0x1a,
+ 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3b, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d,
+ 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc7,
+ 0x0c, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3c, 0x12, 0x34, 0x0a,
+ 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x50,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xc8, 0x0c, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d,
+ 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x3d, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46,
+ 0x45, 0x53, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc9, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x6c, 0x69, 0x73, 0x74,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x3e, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e,
+ 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xca, 0x0c, 0x1a,
+ 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3f, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
+ 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xcb, 0x0c,
+ 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x40, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x54,
+ 0x41, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xcc, 0x0c, 0x1a, 0x15, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x41, 0x12, 0x26, 0x0a, 0x0c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4c,
+ 0x49, 0x53, 0x54, 0x10, 0xcd, 0x0c, 0x1a, 0x13, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x74, 0x61,
+ 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x42, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
+ 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xce, 0x0c,
+ 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x43, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53,
+ 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa5,
+ 0x0d, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x12, 0x34, 0x0a,
+ 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x50,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x2b, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54,
+ 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x6c, 0x69, 0x73, 0x74,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x2c, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47,
+ 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa8, 0x0d, 0x1a,
+ 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x12, 0x4c, 0x0a, 0x1f, 0x43,
+ 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54,
+ 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa9,
+ 0x0d, 0x1a, 0x26, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50,
+ 0x5f, 0x47, 0x55, 0x4c, 0x46, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x90, 0x4e, 0x1a, 0x15,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67, 0x75, 0x6c, 0x66, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0xf3, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a,
+ 0x36, 0x0a, 0x03, 0x62, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x99, 0xd2, 0x09, 0x20, 0x01,
+ 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x74, 0x42, 0x5d, 0x0a, 0x1f, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x63, 0x61,
+ 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x11, 0x43, 0x61, 0x70, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
+ 0x25, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f,
+ 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_capabilities_proto_rawDescOnce sync.Once
+ file_capabilities_proto_rawDescData = file_capabilities_proto_rawDesc
+)
+
+func file_capabilities_proto_rawDescGZIP() []byte {
+ file_capabilities_proto_rawDescOnce.Do(func() {
+ file_capabilities_proto_rawDescData = protoimpl.X.CompressGZIP(file_capabilities_proto_rawDescData)
+ })
+ return file_capabilities_proto_rawDescData
+}
+
+var file_capabilities_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_capabilities_proto_goTypes = []interface{}{
+ (Capability)(0), // 0: chainguard.capabilities.Capability
+ (*descriptorpb.EnumValueOptions)(nil), // 1: google.protobuf.EnumValueOptions
+}
+var file_capabilities_proto_depIdxs = []int32{
+ 1, // 0: chainguard.capabilities.name:extendee -> google.protobuf.EnumValueOptions
+ 1, // 1: chainguard.capabilities.bit:extendee -> google.protobuf.EnumValueOptions
+ 2, // [2:2] is the sub-list for method output_type
+ 2, // [2:2] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 0, // [0:2] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_capabilities_proto_init() }
+func file_capabilities_proto_init() {
+ if File_capabilities_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_capabilities_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 0,
+ NumExtensions: 2,
+ NumServices: 0,
+ },
+ GoTypes: file_capabilities_proto_goTypes,
+ DependencyIndexes: file_capabilities_proto_depIdxs,
+ EnumInfos: file_capabilities_proto_enumTypes,
+ ExtensionInfos: file_capabilities_proto_extTypes,
+ }.Build()
+ File_capabilities_proto = out.File
+ file_capabilities_proto_rawDesc = nil
+ file_capabilities_proto_goTypes = nil
+ file_capabilities_proto_depIdxs = nil
+}
diff --git a/proto/capabilities/capabilities.proto b/proto/capabilities/capabilities.proto
new file mode 100644
index 00000000..fdf23627
--- /dev/null
+++ b/proto/capabilities/capabilities.proto
@@ -0,0 +1,137 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/capabilities";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.capabilities";
+option java_outer_classname = "CapabilitiesProto";
+
+package chainguard.capabilities;
+
+import "google/protobuf/descriptor.proto";
+
+extend google.protobuf.EnumValueOptions {
+ // This decorates our capability enumeration values with
+ // the friendly name to show to humans.
+ string name = 189350643;
+
+ // This decorates our capability enumeration values with
+ // a bit index enabling compacted encodings.
+ uint32 bit = 20221109;
+}
+
+// Capability is an enumeration of the Chainguard IAM capabilities.
+enum Capability {
+ UNKNOWN = 0;
+
+ CAP_IAM_GROUPS_CREATE = 101 [(name) = "groups.create", (bit) = 1];
+ CAP_IAM_GROUPS_UPDATE = 102 [(name) = "groups.update", (bit) = 2];
+ CAP_IAM_GROUPS_LIST = 103 [(name) = "groups.list", (bit) = 3];
+ CAP_IAM_GROUPS_DELETE = 104 [(name) = "groups.delete", (bit) = 4];
+
+ CAP_IAM_GROUP_INVITES_CREATE = 201 [(name) = "group_invites.create", (bit) = 5];
+ CAP_IAM_GROUP_INVITES_LIST = 203 [(name) = "group_invites.list", (bit) = 6];
+ CAP_IAM_GROUP_INVITES_DELETE = 204 [(name) = "group_invites.delete", (bit) = 7];
+
+ CAP_IAM_ROLES_CREATE = 301 [(name) = "roles.create", (bit) = 8];
+ CAP_IAM_ROLES_UPDATE = 302 [(name) = "roles.update", (bit) = 9];
+ CAP_IAM_ROLES_LIST = 303 [(name) = "roles.list", (bit) = 10];
+ CAP_IAM_ROLES_DELETE = 304 [(name) = "roles.delete", (bit) = 11];
+
+ CAP_IAM_ROLE_BINDINGS_CREATE = 401 [(name) = "role_bindings.create", (bit) = 12];
+ CAP_IAM_ROLE_BINDINGS_UPDATE = 402 [(name) = "role_bindings.update", (bit) = 13];
+ CAP_IAM_ROLE_BINDINGS_LIST = 403 [(name) = "role_bindings.list", (bit) = 14];
+ CAP_IAM_ROLE_BINDINGS_DELETE = 404 [(name) = "role_bindings.delete", (bit) = 15];
+
+ CAP_TENANT_CLUSTERS_CREATE = 501 [(name) = "clusters.create", (bit) = 16];
+ CAP_TENANT_CLUSTERS_UPDATE = 502 [(name) = "clusters.update", (bit) = 17];
+ CAP_TENANT_CLUSTERS_LIST = 503 [(name) = "clusters.list", (bit) = 18];
+ CAP_TENANT_CLUSTERS_DELETE = 504 [(name) = "clusters.delete", (bit) = 19];
+ CAP_TENANT_CLUSTERS_DISCOVER = 505 [(name) = "clusters.discover", (bit) = 51];
+
+ CAP_TENANT_RECORDS_LIST = 603 [(name) = "records.list", (bit) = 20];
+ CAP_TENANT_RECORD_CONTEXTS_LIST = 613 [(name) = "record_contexts.list", (bit) = 48];
+ CAP_TENANT_RECORD_SIGNATURES_LIST = 623 [(name) = "record_signatures.list", (bit) = 49];
+ CAP_TENANT_RECORD_POLICY_RESULTS_LIST = 633 [(name) = "record_policy_results.list", (bit) = 50];
+
+ CAP_TENANT_RISKS_LIST = 640 [(name) = "risks.list", (bit) = 68];
+
+ CAP_TENANT_SBOMS_LIST = 650 [(name) = "sboms.list", (bit) = 69];
+
+ CAP_TENANT_VULN_REPORTS_LIST = 660 [(name) = "vuln_reports.list", (bit) = 70];
+
+ CAP_TENANT_ATTESTATIONS_LIST = 670 [(name) = "attestations.list", (bit) = 71];
+
+ CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE = 701 [(name) = "account_associations.create", (bit) = 21];
+ CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE = 702 [(name) = "account_associations.update", (bit) = 22];
+ CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST = 703 [(name) = "account_associations.list", (bit) = 23];
+ CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE = 704 [(name) = "account_associations.delete", (bit) = 24];
+
+ CAP_IAM_POLICY_CREATE = 801 [(name) = "policy.create", (bit) = 25];
+ CAP_IAM_POLICY_UPDATE = 802 [(name) = "policy.update", (bit) = 26];
+ CAP_IAM_POLICY_LIST = 803 [(name) = "policy.list", (bit) = 27];
+ CAP_IAM_POLICY_DELETE = 804 [(name) = "policy.delete", (bit) = 28];
+
+ CAP_IAM_IDENTITY_CREATE = 901 [(name) = "identity.create", (bit) = 29];
+ CAP_IAM_IDENTITY_UPDATE = 902 [(name) = "identity.update", (bit) = 30];
+ CAP_IAM_IDENTITY_LIST = 903 [(name) = "identity.list", (bit) = 31];
+ CAP_IAM_IDENTITY_DELETE = 904 [(name) = "identity.delete", (bit) = 32];
+
+ CAP_TENANT_NODES_LIST = 1003 [(name) = "nodes.list", (bit) = 33];
+
+ CAP_TENANT_NAMESPACES_LIST = 1103 [(name) = "namespaces.list", (bit) = 34];
+
+ CAP_TENANT_WORKLOADS_LIST = 1203 [(name) = "workloads.list", (bit) = 35];
+
+
+ CAP_IAM_IDENTITY_PROVIDERS_CREATE = 1301 [(name) = "identity_providers.create", (bit) = 52];
+ CAP_IAM_IDENTITY_PROVIDERS_UPDATE = 1302 [(name) = "identity_providers.update", (bit) = 53];
+ CAP_IAM_IDENTITY_PROVIDERS_LIST = 1303 [(name) = "identity_providers.list", (bit) = 54];
+ CAP_IAM_IDENTITY_PROVIDERS_DELETE = 1304 [(name) = "identity_providers.delete", (bit) = 55];
+
+ // Events
+
+ CAP_EVENTS_SUBSCRIPTION_CREATE = 1501 [(name) = "subscriptions.create", (bit) = 36];
+ CAP_EVENTS_SUBSCRIPTION_UPDATE = 1502 [(name) = "subscriptions.update", (bit) = 37];
+ CAP_EVENTS_SUBSCRIPTION_LIST = 1503 [(name) = "subscriptions.list", (bit) = 38];
+ CAP_EVENTS_SUBSCRIPTION_DELETE = 1504 [(name) = "subscriptions.delete", (bit) = 39];
+
+ // Registry
+
+ // TODO(jason): Remove these coarse-grained capabilities after they're removed from the roles.
+ CAP_REGISTRY_PULL = 1601 [(name) = "registry.pull", (bit) = 40]; // Can read tags, blobs, manifests.
+ CAP_REGISTRY_PUSH = 1602 [(name) = "registry.push", (bit) = 41]; // Can create and update tags, blobs, manifests.
+
+ CAP_REPO_CREATE = 1603 [(name) = "repo.create", (bit) = 56];
+ CAP_REPO_UPDATE = 1604 [(name) = "repo.update", (bit) = 57];
+ CAP_REPO_LIST = 1605 [(name) = "repo.list", (bit) = 58];
+ CAP_REPO_DELETE = 1606 [(name) = "repo.delete", (bit) = 59];
+
+ CAP_MANIFEST_CREATE = 1607 [(name) = "manifest.create", (bit) = 60];
+ CAP_MANIFEST_UPDATE = 1608 [(name) = "manifest.update", (bit) = 61];
+ CAP_MANIFEST_LIST = 1609 [(name) = "manifest.list", (bit) = 62];
+ CAP_MANIFEST_DELETE = 1610 [(name) = "manifest.delete", (bit) = 63];
+
+ CAP_TAG_CREATE = 1611 [(name) = "tag.create", (bit) = 64];
+ CAP_TAG_UPDATE = 1612 [(name) = "tag.update", (bit) = 65];
+ CAP_TAG_LIST = 1613 [(name) = "tag.list", (bit) = 66];
+ CAP_TAG_DELETE = 1614 [(name) = "tag.delete", (bit) = 67];
+
+ // Sigstore-aas
+
+ CAP_SIGSTORE_CREATE = 1701 [(name) = "sigstore.create", (bit) = 42];
+ CAP_SIGSTORE_UPDATE = 1702 [(name) = "sigstore.update", (bit) = 43];
+ CAP_SIGSTORE_LIST = 1703 [(name) = "sigstore.list", (bit) = 44];
+ CAP_SIGSTORE_DELETE = 1704 [(name) = "sigstore.delete", (bit) = 45];
+
+ CAP_SIGSTORE_CERTIFICATE_CREATE = 1705 [(name) = "sigstore.certificate.create", (bit) = 46];
+
+ // This is orthogonal enough that we should leave
+ // it somewhat separate, so add new capabilities above.
+ // TODO(mattmoor): Think about whether we can encode specific
+ // controller capabilities into our access control here?
+ // e.g. could each logical controller/webhook be its own
+ // capability?
+ CAP_GULFSTREAM = 10000 [(name) = "gulfstream", (bit) = 47];
+
+ // next bit: 70
+}
diff --git a/proto/capabilities/capabilities_test.go b/proto/capabilities/capabilities_test.go
new file mode 100644
index 00000000..8d230dcb
--- /dev/null
+++ b/proto/capabilities/capabilities_test.go
@@ -0,0 +1,139 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package capabilities
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
+)
+
+func TestStringify(t *testing.T) {
+ tests := []struct {
+ name string
+ capability Capability
+ want string
+ wantErr error
+ }{{
+ name: "no requirements",
+ }, {
+ name: "simple",
+ capability: Capability_CAP_EVENTS_SUBSCRIPTION_DELETE,
+ want: "subscriptions.delete",
+ }, {
+ name: "unknown",
+ capability: 0,
+ want: "",
+ }, {
+ name: "invalid",
+ capability: 1,
+ wantErr: status.Error(codes.Internal, `capability has no descriptor: 1`),
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ got, gotErr := Stringify(test.capability)
+
+ switch {
+ case (gotErr != nil) != (test.wantErr != nil):
+ t.Fatalf("Stringify() = %v, %v, wanted %v, %v", got, gotErr, test.want, test.wantErr)
+ case gotErr != nil && gotErr.Error() != test.wantErr.Error():
+ t.Fatalf("Stringify() = %v, wanted %v", gotErr, test.wantErr)
+ case gotErr == nil && got != test.want:
+ t.Fatalf("Stringify() = %v, wanted %v", got, test.want)
+ }
+ })
+ }
+}
+
+func TestRoundTrip(t *testing.T) {
+ for cap := range Capability_name {
+ scap, _ := Stringify(Capability(cap))
+ got, _ := Parse(scap)
+ if Capability(cap) != got {
+ t.Fatalf("Parse(Stringify()) = %v, wanted %v", got, Capability(cap))
+ }
+ }
+}
+
+func TestEncoding(t *testing.T) {
+ all := make(Set, 0, len(Capability_name))
+ for cap := range Capability_name {
+ if cap == int32(Capability_UNKNOWN) {
+ continue
+ }
+ all = append(all, Capability(cap))
+ }
+ all = sortCaps(all)
+
+ tests := []struct {
+ name string
+ caps Set
+ }{{
+ name: "owner",
+ caps: OwnerCaps,
+ }, {
+ name: "editor",
+ caps: EditorCaps,
+ }, {
+ name: "viewer",
+ caps: ViewerCaps,
+ }, {
+ name: "gulfstream",
+ caps: Set{Capability_CAP_GULFSTREAM},
+ }, {
+ name: "all",
+ caps: all,
+ }, {
+ // sortCaps removes duplicates.
+ name: "duplicates",
+ caps: sortCaps(Set{Capability_CAP_GULFSTREAM, Capability_CAP_GULFSTREAM, Capability_CAP_GULFSTREAM}),
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name+"-standard", func(t *testing.T) {
+ raw, err := json.Marshal(test.caps)
+ if err != nil {
+ t.Fatalf("json.Marshal() = %v", err)
+ }
+
+ t.Logf("ENCODED: %s", raw)
+
+ // Confirm that we decode it and get what we expect.
+ got := make(Set, 0, len(test.caps))
+ if err := json.Unmarshal(raw, &got); err != nil {
+ t.Fatalf("json.Unmarshal() = %v", err)
+ }
+ if diff := cmp.Diff(got, test.caps); diff != "" {
+ t.Errorf("(-got +want) = %s", diff)
+ }
+ })
+
+ t.Run(test.name+"-legacy", func(t *testing.T) {
+ // Remove our type alias, so that we use the legacy encoding.
+ legacy := []Capability(test.caps)
+ raw, err := json.Marshal(legacy)
+ if err != nil {
+ t.Fatalf("json.Marshal() = %v", err)
+ }
+
+ t.Logf("ENCODED: %s", raw)
+
+ // Confirm that we decode it and get what we expect when coming from
+ // the legacy encoding.
+ got := make(Set, 0, len(test.caps))
+ if err := json.Unmarshal(raw, &got); err != nil {
+ t.Fatalf("json.Unmarshal() = %v", err)
+ }
+ if diff := cmp.Diff(got, test.caps); diff != "" {
+ t.Errorf("(-got +want) = %s", diff)
+ }
+ })
+ }
+}
diff --git a/proto/capabilities/doc.go b/proto/capabilities/doc.go
new file mode 100644
index 00000000..5765d5b9
--- /dev/null
+++ b/proto/capabilities/doc.go
@@ -0,0 +1,9 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package capabilities contains the proto enum with our IAM capabilities.
+//
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. capabilities.proto
+package capabilities
diff --git a/proto/capabilities/roles.go b/proto/capabilities/roles.go
new file mode 100644
index 00000000..4a76f7a6
--- /dev/null
+++ b/proto/capabilities/roles.go
@@ -0,0 +1,161 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package capabilities
+
+import (
+ "golang.org/x/exp/maps"
+ "golang.org/x/exp/slices"
+)
+
+var (
+ // viewerCaps are read-only capabilities that do not affect state.
+ ViewerCaps = sortCaps(append([]Capability{
+ Capability_CAP_EVENTS_SUBSCRIPTION_LIST,
+
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST,
+ Capability_CAP_IAM_GROUP_INVITES_LIST,
+ Capability_CAP_IAM_GROUPS_LIST,
+ Capability_CAP_IAM_ROLE_BINDINGS_LIST,
+ Capability_CAP_IAM_ROLES_LIST,
+ Capability_CAP_IAM_POLICY_LIST,
+ Capability_CAP_IAM_IDENTITY_LIST,
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_LIST,
+
+ Capability_CAP_TENANT_CLUSTERS_DISCOVER,
+ Capability_CAP_TENANT_CLUSTERS_LIST,
+ Capability_CAP_TENANT_NAMESPACES_LIST,
+ Capability_CAP_TENANT_NODES_LIST,
+ Capability_CAP_TENANT_RECORDS_LIST,
+ Capability_CAP_TENANT_RECORD_CONTEXTS_LIST,
+ Capability_CAP_TENANT_RECORD_SIGNATURES_LIST,
+ Capability_CAP_TENANT_RECORD_POLICY_RESULTS_LIST,
+ Capability_CAP_TENANT_RISKS_LIST,
+ Capability_CAP_TENANT_SBOMS_LIST,
+ Capability_CAP_TENANT_VULN_REPORTS_LIST,
+ Capability_CAP_TENANT_WORKLOADS_LIST,
+
+ Capability_CAP_SIGSTORE_LIST,
+ },
+ // Viewers can also list repos and tags, and pull images.
+ RegistryPullCaps...))
+
+ // editorCaps can modify state, but not grant roles/permissions.
+ EditorCaps = sortCaps(append([]Capability{
+ Capability_CAP_EVENTS_SUBSCRIPTION_CREATE,
+ Capability_CAP_EVENTS_SUBSCRIPTION_DELETE,
+ Capability_CAP_EVENTS_SUBSCRIPTION_UPDATE,
+
+ Capability_CAP_TENANT_CLUSTERS_CREATE,
+ Capability_CAP_TENANT_CLUSTERS_UPDATE,
+ Capability_CAP_TENANT_CLUSTERS_DELETE,
+
+ Capability_CAP_SIGSTORE_CERTIFICATE_CREATE,
+ Capability_CAP_SIGSTORE_CREATE,
+ Capability_CAP_SIGSTORE_DELETE,
+ Capability_CAP_SIGSTORE_UPDATE,
+ }, ViewerCaps...))
+
+ // ownerCaps includes all capabilities possible by a user.
+ OwnerCaps = sortCaps(append([]Capability{
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE,
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE,
+ Capability_CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE,
+
+ Capability_CAP_IAM_GROUP_INVITES_CREATE,
+ Capability_CAP_IAM_GROUP_INVITES_DELETE,
+
+ Capability_CAP_IAM_GROUPS_CREATE,
+ Capability_CAP_IAM_GROUPS_DELETE,
+ Capability_CAP_IAM_GROUPS_UPDATE,
+
+ Capability_CAP_IAM_POLICY_CREATE,
+ Capability_CAP_IAM_POLICY_UPDATE,
+ Capability_CAP_IAM_POLICY_DELETE,
+
+ Capability_CAP_IAM_IDENTITY_CREATE,
+ Capability_CAP_IAM_IDENTITY_DELETE,
+ Capability_CAP_IAM_IDENTITY_UPDATE,
+
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_CREATE,
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_DELETE,
+ Capability_CAP_IAM_IDENTITY_PROVIDERS_UPDATE,
+
+ Capability_CAP_IAM_ROLE_BINDINGS_CREATE,
+ Capability_CAP_IAM_ROLE_BINDINGS_DELETE,
+ Capability_CAP_IAM_ROLE_BINDINGS_UPDATE,
+
+ Capability_CAP_IAM_ROLES_CREATE,
+ Capability_CAP_IAM_ROLES_DELETE,
+ Capability_CAP_IAM_ROLES_UPDATE,
+
+ // Add gulfstream capability to owner so owners can rolebind
+ // identities to the gulfstream role.
+ Capability_CAP_GULFSTREAM,
+ }, append(EditorCaps,
+ // Owners can also push and delete images, subject to the identity allowlist.
+ RegistryPushCaps...)...))
+
+ RegistryPullCaps = sortCaps([]Capability{
+ Capability_CAP_IAM_GROUPS_LIST,
+
+ Capability_CAP_REPO_LIST,
+ Capability_CAP_MANIFEST_LIST,
+ Capability_CAP_TAG_LIST,
+
+ Capability_CAP_TENANT_RECORD_SIGNATURES_LIST,
+ Capability_CAP_TENANT_SBOMS_LIST,
+ Capability_CAP_TENANT_VULN_REPORTS_LIST,
+ })
+
+ RegistryPushCaps = sortCaps(append([]Capability{
+ Capability_CAP_REPO_CREATE,
+ Capability_CAP_REPO_UPDATE,
+ Capability_CAP_REPO_DELETE,
+
+ Capability_CAP_MANIFEST_CREATE,
+ Capability_CAP_MANIFEST_UPDATE,
+ Capability_CAP_MANIFEST_DELETE,
+
+ Capability_CAP_TAG_CREATE,
+ Capability_CAP_TAG_UPDATE,
+ Capability_CAP_TAG_DELETE,
+
+ // To create nested groups as needed on push.
+ Capability_CAP_IAM_GROUPS_CREATE,
+ }, RegistryPullCaps...))
+
+ RegistryPullTokenCreatorCaps = sortCaps(append([]Capability{
+ // Minimal set of capabilities to create a registry pull token.
+ Capability_CAP_IAM_ROLE_BINDINGS_CREATE,
+ Capability_CAP_IAM_IDENTITY_CREATE,
+
+ Capability_CAP_IAM_ROLES_LIST,
+ }, RegistryPullCaps...))
+
+ SigningViewerCaps = sortCaps([]Capability{
+ Capability_CAP_SIGSTORE_LIST,
+ })
+
+ SigningCertRequesterCaps = sortCaps(append([]Capability{
+ Capability_CAP_SIGSTORE_CERTIFICATE_CREATE,
+ }, SigningViewerCaps...))
+
+ SigningEditorCaps = sortCaps(append([]Capability{
+ Capability_CAP_SIGSTORE_CREATE,
+ Capability_CAP_SIGSTORE_DELETE,
+ Capability_CAP_SIGSTORE_UPDATE,
+ }, SigningCertRequesterCaps...))
+)
+
+func sortCaps(caps []Capability) []Capability {
+ uniq := map[Capability]struct{}{}
+ for _, c := range caps {
+ uniq[c] = struct{}{}
+ }
+ out := maps.Keys(uniq)
+ slices.Sort(out)
+ return out
+}
diff --git a/proto/google/api/annotations.proto b/proto/google/api/annotations.proto
new file mode 100644
index 00000000..efdab3db
--- /dev/null
+++ b/proto/google/api/annotations.proto
@@ -0,0 +1,31 @@
+// Copyright 2015 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/api/http.proto";
+import "google/protobuf/descriptor.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "AnnotationsProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.MethodOptions {
+ // See `HttpRule`.
+ HttpRule http = 72295728;
+}
diff --git a/proto/google/api/field_behavior.proto b/proto/google/api/field_behavior.proto
new file mode 100644
index 00000000..c4abe3b6
--- /dev/null
+++ b/proto/google/api/field_behavior.proto
@@ -0,0 +1,90 @@
+// Copyright 2018 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/descriptor.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "FieldBehaviorProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.FieldOptions {
+ // A designation of a specific field behavior (required, output only, etc.)
+ // in protobuf messages.
+ //
+ // Examples:
+ //
+ // string name = 1 [(google.api.field_behavior) = REQUIRED];
+ // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+ // google.protobuf.Duration ttl = 1
+ // [(google.api.field_behavior) = INPUT_ONLY];
+ // google.protobuf.Timestamp expire_time = 1
+ // [(google.api.field_behavior) = OUTPUT_ONLY,
+ // (google.api.field_behavior) = IMMUTABLE];
+ repeated google.api.FieldBehavior field_behavior = 1052;
+}
+
+// An indicator of the behavior of a given field (for example, that a field
+// is required in requests, or given as output but ignored as input).
+// This **does not** change the behavior in protocol buffers itself; it only
+// denotes the behavior and may affect how API tooling handles the field.
+//
+// Note: This enum **may** receive new values in the future.
+enum FieldBehavior {
+ // Conventional default for enums. Do not use this.
+ FIELD_BEHAVIOR_UNSPECIFIED = 0;
+
+ // Specifically denotes a field as optional.
+ // While all fields in protocol buffers are optional, this may be specified
+ // for emphasis if appropriate.
+ OPTIONAL = 1;
+
+ // Denotes a field as required.
+ // This indicates that the field **must** be provided as part of the request,
+ // and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
+ REQUIRED = 2;
+
+ // Denotes a field as output only.
+ // This indicates that the field is provided in responses, but including the
+ // field in a request does nothing (the server *must* ignore it and
+ // *must not* throw an error as a result of the field's presence).
+ OUTPUT_ONLY = 3;
+
+ // Denotes a field as input only.
+ // This indicates that the field is provided in requests, and the
+ // corresponding field is not included in output.
+ INPUT_ONLY = 4;
+
+ // Denotes a field as immutable.
+ // This indicates that the field may be set once in a request to create a
+ // resource, but may not be changed thereafter.
+ IMMUTABLE = 5;
+
+ // Denotes that a (repeated) field is an unordered list.
+ // This indicates that the service may provide the elements of the list
+ // in any arbitrary order, rather than the order the user originally
+ // provided. Additionally, the list's order may or may not be stable.
+ UNORDERED_LIST = 6;
+
+ // Denotes that this field returns a non-empty default value if not set.
+ // This indicates that if the user provides the empty value in a request,
+ // a non-empty value will be returned. The user will not be aware of what
+ // non-empty value to expect.
+ NON_EMPTY_DEFAULT = 7;
+}
diff --git a/proto/google/api/http.proto b/proto/google/api/http.proto
new file mode 100644
index 00000000..113fa936
--- /dev/null
+++ b/proto/google/api/http.proto
@@ -0,0 +1,375 @@
+// Copyright 2015 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.api;
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "HttpProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+// Defines the HTTP configuration for an API service. It contains a list of
+// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
+// to one or more HTTP REST API methods.
+message Http {
+ // A list of HTTP configuration rules that apply to individual API methods.
+ //
+ // **NOTE:** All service configuration rules follow "last one wins" order.
+ repeated HttpRule rules = 1;
+
+ // When set to true, URL path parameters will be fully URI-decoded except in
+ // cases of single segment matches in reserved expansion, where "%2F" will be
+ // left encoded.
+ //
+ // The default behavior is to not decode RFC 6570 reserved characters in multi
+ // segment matches.
+ bool fully_decode_reserved_expansion = 2;
+}
+
+// # gRPC Transcoding
+//
+// gRPC Transcoding is a feature for mapping between a gRPC method and one or
+// more HTTP REST endpoints. It allows developers to build a single API service
+// that supports both gRPC APIs and REST APIs. Many systems, including [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
+// and use it for large scale production services.
+//
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
+// how different portions of the gRPC request message are mapped to the URL
+// path, URL query parameters, and HTTP request body. It also controls how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule` is
+// typically specified as an `google.api.http` annotation on the gRPC method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The path
+// template may refer to one or more fields in the gRPC request message, as long
+// as each field is a non-repeated field with a primitive (non-message) type.
+// The path template controls how fields of the request message are mapped to
+// the URL path.
+//
+// Example:
+//
+// service Messaging {
+// rpc GetMessage(GetMessageRequest) returns (Message) {
+// option (google.api.http) = {
+// get: "/v1/{name=messages/*}"
+// };
+// }
+// }
+// message GetMessageRequest {
+// string name = 1; // Mapped to URL path.
+// }
+// message Message {
+// string text = 1; // The resource content.
+// }
+//
+// This enables an HTTP REST to gRPC mapping as below:
+//
+// HTTP | gRPC
+// -----|-----
+// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
+//
+// Any fields in the request message which are not bound by the path template
+// automatically become HTTP query parameters if there is no HTTP request body.
+// For example:
+//
+// service Messaging {
+// rpc GetMessage(GetMessageRequest) returns (Message) {
+// option (google.api.http) = {
+// get:"/v1/messages/{message_id}"
+// };
+// }
+// }
+// message GetMessageRequest {
+// message SubMessage {
+// string subfield = 1;
+// }
+// string message_id = 1; // Mapped to URL path.
+// int64 revision = 2; // Mapped to URL query parameter `revision`.
+// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
+// }
+//
+// This enables a HTTP JSON to RPC mapping as below:
+//
+// HTTP | gRPC
+// -----|-----
+// `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
+// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
+// "foo"))`
+//
+// Note that fields which are mapped to URL query parameters must have a
+// primitive type or a repeated primitive type or a non-repeated message type.
+// In the case of a repeated type, the parameter can be repeated in the URL
+// as `...?param=A¶m=B`. In the case of a message type, each field of the
+// message is mapped to a separate parameter, such as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
+//
+// For HTTP methods that allow a request body, the `body` field
+// specifies the mapping. Consider a REST update method on the
+// message resource collection:
+//
+// service Messaging {
+// rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+// option (google.api.http) = {
+// patch: "/v1/messages/{message_id}"
+// body: "message"
+// };
+// }
+// }
+// message UpdateMessageRequest {
+// string message_id = 1; // mapped to the URL
+// Message message = 2; // mapped to the body
+// }
+//
+// The following HTTP JSON to RPC mapping is enabled, where the
+// representation of the JSON in the request body is determined by
+// protos JSON encoding:
+//
+// HTTP | gRPC
+// -----|-----
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
+// "123456" message { text: "Hi!" })`
+//
+// The special name `*` can be used in the body mapping to define that
+// every field not bound by the path template should be mapped to the
+// request body. This enables the following alternative definition of
+// the update method:
+//
+// service Messaging {
+// rpc UpdateMessage(Message) returns (Message) {
+// option (google.api.http) = {
+// patch: "/v1/messages/{message_id}"
+// body: "*"
+// };
+// }
+// }
+// message Message {
+// string message_id = 1;
+// string text = 2;
+// }
+//
+//
+// The following HTTP JSON to RPC mapping is enabled:
+//
+// HTTP | gRPC
+// -----|-----
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
+// "123456" text: "Hi!")`
+//
+// Note that when using `*` in the body mapping, it is not possible to
+// have HTTP parameters, as all fields not bound by the path end in
+// the body. This makes this option more rarely used in practice when
+// defining REST APIs. The common usage of `*` is in custom methods
+// which don't use the URL at all for transferring data.
+//
+// It is possible to define multiple HTTP methods for one RPC by using
+// the `additional_bindings` option. Example:
+//
+// service Messaging {
+// rpc GetMessage(GetMessageRequest) returns (Message) {
+// option (google.api.http) = {
+// get: "/v1/messages/{message_id}"
+// additional_bindings {
+// get: "/v1/users/{user_id}/messages/{message_id}"
+// }
+// };
+// }
+// }
+// message GetMessageRequest {
+// string message_id = 1;
+// string user_id = 2;
+// }
+//
+// This enables the following two alternative HTTP JSON to RPC mappings:
+//
+// HTTP | gRPC
+// -----|-----
+// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
+// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
+// "123456")`
+//
+// ## Rules for HTTP mapping
+//
+// 1. Leaf request fields (recursive expansion nested messages in the request
+// message) are classified into three categories:
+// - Fields referred by the path template. They are passed via the URL path.
+// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP
+// request body.
+// - All other fields are passed via the URL query parameters, and the
+// parameter name is the field path in the request message. A repeated
+// field can be represented as multiple query parameters under the same
+// name.
+// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields
+// are passed via URL path and HTTP request body.
+// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all
+// fields are passed via URL path and URL query parameters.
+//
+// ### Path template syntax
+//
+// Template = "/" Segments [ Verb ] ;
+// Segments = Segment { "/" Segment } ;
+// Segment = "*" | "**" | LITERAL | Variable ;
+// Variable = "{" FieldPath [ "=" Segments ] "}" ;
+// FieldPath = IDENT { "." IDENT } ;
+// Verb = ":" LITERAL ;
+//
+// The syntax `*` matches a single URL path segment. The syntax `**` matches
+// zero or more URL path segments, which must be the last part of the URL path
+// except the `Verb`.
+//
+// The syntax `Variable` matches part of the URL path as specified by its
+// template. A variable template must not contain other variables. If a variable
+// matches a single path segment, its template may be omitted, e.g. `{var}`
+// is equivalent to `{var=*}`.
+//
+// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
+// contains any reserved character, such characters should be percent-encoded
+// before the matching.
+//
+// If a variable contains exactly one path segment, such as `"{var}"` or
+// `"{var=*}"`, when such a variable is expanded into a URL path on the client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
+// server side does the reverse decoding. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis) as
+// `{var}`.
+//
+// If a variable contains multiple path segments, such as `"{var=foo/*}"`
+// or `"{var=**}"`, when such a variable is expanded into a URL path on the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis) as
+// `{+var}`.
+//
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration language
+// for configuring a gRPC service to become a user-facing product. The
+// service config is simply the YAML representation of the `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure gRPC
+// transcoding in your service config YAML files. You do this by specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
+// effect as the proto annotation. This can be particularly useful if you
+// have a proto that is reused in multiple services. Note that any transcoding
+// specified in the service config will override any matching transcoding
+// configuration in the proto.
+//
+// Example:
+//
+// http:
+// rules:
+// # Selects a gRPC method and applies HttpRule to it.
+// - selector: example.v1.Messaging.GetMessage
+// get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
+// proto to JSON conversion must follow the [proto3
+// specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
+// Expansion, the multi segment variable **does not** follow RFC 6570 Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
+// does not expand special characters like `?` and `#`, which would lead
+// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
+// for multi segment variables.
+//
+// The path variables **must not** refer to any repeated or mapped field,
+// because client libraries are not capable of handling such variable expansion.
+//
+// The path variables **must not** capture the leading "/" character. The reason
+// is that the most common use case "{var}" does not capture the leading "/"
+// character. For consistency, all path variables must share the same behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters, because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it can map
+// the request or response body to a repeated field. However, some gRPC
+// Transcoding implementations may not support this feature.
+message HttpRule {
+ // Selects a method to which this rule applies.
+ //
+ // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+ string selector = 1;
+
+ // Determines the URL pattern is matched by this rules. This pattern can be
+ // used with any of the {get|put|post|delete|patch} methods. A custom method
+ // can be defined using the 'custom' field.
+ oneof pattern {
+ // Maps to HTTP GET. Used for listing and getting information about
+ // resources.
+ string get = 2;
+
+ // Maps to HTTP PUT. Used for replacing a resource.
+ string put = 3;
+
+ // Maps to HTTP POST. Used for creating a resource or performing an action.
+ string post = 4;
+
+ // Maps to HTTP DELETE. Used for deleting a resource.
+ string delete = 5;
+
+ // Maps to HTTP PATCH. Used for updating a resource.
+ string patch = 6;
+
+ // The custom pattern is used for specifying an HTTP method that is not
+ // included in the `pattern` field, such as HEAD, or "*" to leave the
+ // HTTP method unspecified for this rule. The wild-card rule is useful
+ // for services that provide content to Web (HTML) clients.
+ CustomHttpPattern custom = 8;
+ }
+
+ // The name of the request field whose value is mapped to the HTTP request
+ // body, or `*` for mapping all request fields not captured by the path
+ // pattern to the HTTP body, or omitted for not having any HTTP request body.
+ //
+ // NOTE: the referred field must be present at the top-level of the request
+ // message type.
+ string body = 7;
+
+ // Optional. The name of the response field whose value is mapped to the HTTP
+ // response body. When omitted, the entire response message will be used
+ // as the HTTP response body.
+ //
+ // NOTE: The referred field must be present at the top-level of the response
+ // message type.
+ string response_body = 12;
+
+ // Additional HTTP bindings for the selector. Nested bindings must
+ // not contain an `additional_bindings` field themselves (that is,
+ // the nesting may only be one level deep).
+ repeated HttpRule additional_bindings = 11;
+}
+
+// A custom pattern is used for defining custom HTTP verb.
+message CustomHttpPattern {
+ // The name of this custom HTTP verb.
+ string kind = 1;
+
+ // The path matched by this custom verb.
+ string path = 2;
+}
diff --git a/proto/google/api/httpbody.proto b/proto/google/api/httpbody.proto
new file mode 100644
index 00000000..00c80aba
--- /dev/null
+++ b/proto/google/api/httpbody.proto
@@ -0,0 +1,81 @@
+// Copyright 2015 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";
+option java_multiple_files = true;
+option java_outer_classname = "HttpBodyProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+// Message that represents an arbitrary HTTP body. It should only be used for
+// payload formats that can't be represented as JSON, such as raw binary or
+// an HTML page.
+//
+//
+// This message can be used both in streaming and non-streaming API methods in
+// the request as well as the response.
+//
+// It can be used as a top-level request field, which is convenient if one
+// wants to extract parameters from either the URL or HTTP template into the
+// request fields and also want access to the raw HTTP body.
+//
+// Example:
+//
+// message GetResourceRequest {
+// // A unique request id.
+// string request_id = 1;
+//
+// // The raw HTTP body is bound to this field.
+// google.api.HttpBody http_body = 2;
+//
+// }
+//
+// service ResourceService {
+// rpc GetResource(GetResourceRequest)
+// returns (google.api.HttpBody);
+// rpc UpdateResource(google.api.HttpBody)
+// returns (google.protobuf.Empty);
+//
+// }
+//
+// Example with streaming methods:
+//
+// service CaldavService {
+// rpc GetCalendar(stream google.api.HttpBody)
+// returns (stream google.api.HttpBody);
+// rpc UpdateCalendar(stream google.api.HttpBody)
+// returns (stream google.api.HttpBody);
+//
+// }
+//
+// Use of this type only changes how the request and response bodies are
+// handled, all other features will continue to work unchanged.
+message HttpBody {
+ // The HTTP Content-Type header value specifying the content type of the body.
+ string content_type = 1;
+
+ // The HTTP request/response body as raw binary.
+ bytes data = 2;
+
+ // Application specific response metadata. Must be set in the first response
+ // for streaming APIs.
+ repeated google.protobuf.Any extensions = 3;
+}
diff --git a/proto/google/api/resource.proto b/proto/google/api/resource.proto
new file mode 100644
index 00000000..ab71d2b9
--- /dev/null
+++ b/proto/google/api/resource.proto
@@ -0,0 +1,239 @@
+// Copyright 2018 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/descriptor.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "ResourceProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.FieldOptions {
+ // An annotation that describes a resource reference, see
+ // [ResourceReference][].
+ google.api.ResourceReference resource_reference = 1055;
+}
+
+extend google.protobuf.FileOptions {
+ // An annotation that describes a resource definition without a corresponding
+ // message; see [ResourceDescriptor][].
+ repeated google.api.ResourceDescriptor resource_definition = 1053;
+}
+
+extend google.protobuf.MessageOptions {
+ // An annotation that describes a resource definition, see
+ // [ResourceDescriptor][].
+ google.api.ResourceDescriptor resource = 1053;
+}
+
+// A simple descriptor of a resource type.
+//
+// ResourceDescriptor annotates a resource message (either by means of a
+// protobuf annotation or use in the service config), and associates the
+// resource's schema, the resource type, and the pattern of the resource name.
+//
+// Example:
+//
+// message Topic {
+// // Indicates this message defines a resource schema.
+// // Declares the resource type in the format of {service}/{kind}.
+// // For Kubernetes resources, the format is {api group}/{kind}.
+// option (google.api.resource) = {
+// type: "pubsub.googleapis.com/Topic"
+// pattern: "projects/{project}/topics/{topic}"
+// };
+// }
+//
+// The ResourceDescriptor Yaml config will look like:
+//
+// resources:
+// - type: "pubsub.googleapis.com/Topic"
+// pattern: "projects/{project}/topics/{topic}"
+//
+// Sometimes, resources have multiple patterns, typically because they can
+// live under multiple parents.
+//
+// Example:
+//
+// message LogEntry {
+// option (google.api.resource) = {
+// type: "logging.googleapis.com/LogEntry"
+// pattern: "projects/{project}/logs/{log}"
+// pattern: "folders/{folder}/logs/{log}"
+// pattern: "organizations/{organization}/logs/{log}"
+// pattern: "billingAccounts/{billing_account}/logs/{log}"
+// };
+// }
+//
+// The ResourceDescriptor Yaml config will look like:
+//
+// resources:
+// - type: 'logging.googleapis.com/LogEntry'
+// pattern: "projects/{project}/logs/{log}"
+// pattern: "folders/{folder}/logs/{log}"
+// pattern: "organizations/{organization}/logs/{log}"
+// pattern: "billingAccounts/{billing_account}/logs/{log}"
+message ResourceDescriptor {
+ // A description of the historical or future-looking state of the
+ // resource pattern.
+ enum History {
+ // The "unset" value.
+ HISTORY_UNSPECIFIED = 0;
+
+ // The resource originally had one pattern and launched as such, and
+ // additional patterns were added later.
+ ORIGINALLY_SINGLE_PATTERN = 1;
+
+ // The resource has one pattern, but the API owner expects to add more
+ // later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
+ // that from being necessary once there are multiple patterns.)
+ FUTURE_MULTI_PATTERN = 2;
+ }
+
+ // A flag representing a specific style that a resource claims to conform to.
+ enum Style {
+ // The unspecified value. Do not use.
+ STYLE_UNSPECIFIED = 0;
+
+ // This resource is intended to be "declarative-friendly".
+ //
+ // Declarative-friendly resources must be more strictly consistent, and
+ // setting this to true communicates to tools that this resource should
+ // adhere to declarative-friendly expectations.
+ //
+ // Note: This is used by the API linter (linter.aip.dev) to enable
+ // additional checks.
+ DECLARATIVE_FRIENDLY = 1;
+ }
+
+ // The resource type. It must be in the format of
+ // {service_name}/{resource_type_kind}. The `resource_type_kind` must be
+ // singular and must not include version numbers.
+ //
+ // Example: `storage.googleapis.com/Bucket`
+ //
+ // The value of the resource_type_kind must follow the regular expression
+ // /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
+ // should use PascalCase (UpperCamelCase). The maximum number of
+ // characters allowed for the `resource_type_kind` is 100.
+ string type = 1;
+
+ // Optional. The relative resource name pattern associated with this resource
+ // type. The DNS prefix of the full resource name shouldn't be specified here.
+ //
+ // The path pattern must follow the syntax, which aligns with HTTP binding
+ // syntax:
+ //
+ // Template = Segment { "/" Segment } ;
+ // Segment = LITERAL | Variable ;
+ // Variable = "{" LITERAL "}" ;
+ //
+ // Examples:
+ //
+ // - "projects/{project}/topics/{topic}"
+ // - "projects/{project}/knowledgeBases/{knowledge_base}"
+ //
+ // The components in braces correspond to the IDs for each resource in the
+ // hierarchy. It is expected that, if multiple patterns are provided,
+ // the same component name (e.g. "project") refers to IDs of the same
+ // type of resource.
+ repeated string pattern = 2;
+
+ // Optional. The field on the resource that designates the resource name
+ // field. If omitted, this is assumed to be "name".
+ string name_field = 3;
+
+ // Optional. The historical or future-looking state of the resource pattern.
+ //
+ // Example:
+ //
+ // // The InspectTemplate message originally only supported resource
+ // // names with organization, and project was added later.
+ // message InspectTemplate {
+ // option (google.api.resource) = {
+ // type: "dlp.googleapis.com/InspectTemplate"
+ // pattern:
+ // "organizations/{organization}/inspectTemplates/{inspect_template}"
+ // pattern: "projects/{project}/inspectTemplates/{inspect_template}"
+ // history: ORIGINALLY_SINGLE_PATTERN
+ // };
+ // }
+ History history = 4;
+
+ // The plural name used in the resource name and permission names, such as
+ // 'projects' for the resource name of 'projects/{project}' and the permission
+ // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same
+ // concept of the `plural` field in k8s CRD spec
+ // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
+ //
+ // Note: The plural form is required even for singleton resources. See
+ // https://aip.dev/156
+ string plural = 5;
+
+ // The same concept of the `singular` field in k8s CRD spec
+ // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
+ // Such as "project" for the `resourcemanager.googleapis.com/Project` type.
+ string singular = 6;
+
+ // Style flag(s) for this resource.
+ // These indicate that a resource is expected to conform to a given
+ // style. See the specific style flags for additional information.
+ repeated Style style = 10;
+}
+
+// Defines a proto annotation that describes a string field that refers to
+// an API resource.
+message ResourceReference {
+ // The resource type that the annotated field references.
+ //
+ // Example:
+ //
+ // message Subscription {
+ // string topic = 2 [(google.api.resource_reference) = {
+ // type: "pubsub.googleapis.com/Topic"
+ // }];
+ // }
+ //
+ // Occasionally, a field may reference an arbitrary resource. In this case,
+ // APIs use the special value * in their resource reference.
+ //
+ // Example:
+ //
+ // message GetIamPolicyRequest {
+ // string resource = 2 [(google.api.resource_reference) = {
+ // type: "*"
+ // }];
+ // }
+ string type = 1;
+
+ // The resource type of a child collection that the annotated field
+ // references. This is useful for annotating the `parent` field that
+ // doesn't have a fixed resource type.
+ //
+ // Example:
+ //
+ // message ListLogEntriesRequest {
+ // string parent = 1 [(google.api.resource_reference) = {
+ // child_type: "logging.googleapis.com/LogEntry"
+ // };
+ // }
+ string child_type = 2;
+}
+
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.go b/proto/platform/advisory/v1/advisory.platform.pb.go
new file mode 100644
index 00000000..bbf57c45
--- /dev/null
+++ b/proto/platform/advisory/v1/advisory.platform.pb.go
@@ -0,0 +1,1936 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: advisory.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Reference_Type int32
+
+const (
+ // The "unset" value.
+ Reference_UNSPECIFIED Reference_Type = 0
+ // Published security advisory for the vulnerability.
+ Reference_ADVISORY Reference_Type = 1
+ // Article or blog post describing the vulnerability.
+ Reference_ARTICLE Reference_Type = 2
+ // Scanner or tool that allows detection in prod environments.
+ Reference_DETECTION Reference_Type = 3
+ // Social media discussion about vuln.
+ Reference_DISCUSSION Reference_Type = 4
+ // Report on vuln.
+ Reference_REPORT Reference_Type = 5
+ // Source code browser link to fix.
+ Reference_FIX Reference_Type = 6
+ // Source code browser link to introduction of vuln.
+ Reference_INTRODUCED Reference_Type = 7
+ // Home web page for package.
+ Reference_PACKAGE Reference_Type = 8
+ // Demonstration of validity of vuln claim.
+ Reference_EVIDENCE Reference_Type = 9
+ // Web page of unspecified kind.
+ Reference_WEB Reference_Type = 10
+)
+
+// Enum value maps for Reference_Type.
+var (
+ Reference_Type_name = map[int32]string{
+ 0: "UNSPECIFIED",
+ 1: "ADVISORY",
+ 2: "ARTICLE",
+ 3: "DETECTION",
+ 4: "DISCUSSION",
+ 5: "REPORT",
+ 6: "FIX",
+ 7: "INTRODUCED",
+ 8: "PACKAGE",
+ 9: "EVIDENCE",
+ 10: "WEB",
+ }
+ Reference_Type_value = map[string]int32{
+ "UNSPECIFIED": 0,
+ "ADVISORY": 1,
+ "ARTICLE": 2,
+ "DETECTION": 3,
+ "DISCUSSION": 4,
+ "REPORT": 5,
+ "FIX": 6,
+ "INTRODUCED": 7,
+ "PACKAGE": 8,
+ "EVIDENCE": 9,
+ "WEB": 10,
+ }
+)
+
+func (x Reference_Type) Enum() *Reference_Type {
+ p := new(Reference_Type)
+ *p = x
+ return p
+}
+
+func (x Reference_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Reference_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_advisory_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (Reference_Type) Type() protoreflect.EnumType {
+ return &file_advisory_platform_proto_enumTypes[0]
+}
+
+func (x Reference_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Reference_Type.Descriptor instead.
+func (Reference_Type) EnumDescriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{1, 0}
+}
+
+type Severity_Type int32
+
+const (
+ // The "unset" value.
+ Severity_UNSPECIFIED Severity_Type = 0
+ // CVSS v2
+ Severity_CVSS_V2 Severity_Type = 1
+ // CVSS >= 3.0 and < 4.0
+ Severity_CVSS_V3 Severity_Type = 2
+ // CVSS >= 4.0 and < 5.0
+ Severity_CVSS_V4 Severity_Type = 3
+)
+
+// Enum value maps for Severity_Type.
+var (
+ Severity_Type_name = map[int32]string{
+ 0: "UNSPECIFIED",
+ 1: "CVSS_V2",
+ 2: "CVSS_V3",
+ 3: "CVSS_V4",
+ }
+ Severity_Type_value = map[string]int32{
+ "UNSPECIFIED": 0,
+ "CVSS_V2": 1,
+ "CVSS_V3": 2,
+ "CVSS_V4": 3,
+ }
+)
+
+func (x Severity_Type) Enum() *Severity_Type {
+ p := new(Severity_Type)
+ *p = x
+ return p
+}
+
+func (x Severity_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Severity_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_advisory_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (Severity_Type) Type() protoreflect.EnumType {
+ return &file_advisory_platform_proto_enumTypes[1]
+}
+
+func (x Severity_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Severity_Type.Descriptor instead.
+func (Severity_Type) EnumDescriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{2, 0}
+}
+
+type FalsePositiveDetermination_Type int32
+
+const (
+ // The "unset" value.
+ FalsePositiveDetermination_FPT_TYPE_UNSPECIFIED FalsePositiveDetermination_Type = 0
+ // VEX: vulnerable_code_not_present.
+ FalsePositiveDetermination_FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED FalsePositiveDetermination_Type = 1
+ // VEX: component_not_present.
+ FalsePositiveDetermination_FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH FalsePositiveDetermination_Type = 2
+ // VEX: vulnerable_code_not_present.
+ FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED FalsePositiveDetermination_Type = 3
+ // VEX: vulnerable_code_not_present.
+ FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE FalsePositiveDetermination_Type = 4
+ // VEX: vulnerable_code_not_in_execute_path.
+ FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH FalsePositiveDetermination_Type = 5
+ // VEX: vulnerable_code_cannot_be_controlled_by_adversary.
+ FalsePositiveDetermination_FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY FalsePositiveDetermination_Type = 6
+ // VEX: inline_mitigations_already_exist.
+ FalsePositiveDetermination_FPT_TYPE_INLINE_MITIGATIONS_EXIST FalsePositiveDetermination_Type = 7
+)
+
+// Enum value maps for FalsePositiveDetermination_Type.
+var (
+ FalsePositiveDetermination_Type_name = map[int32]string{
+ 0: "FPT_TYPE_UNSPECIFIED",
+ 1: "FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED",
+ 2: "FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH",
+ 3: "FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED",
+ 4: "FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE",
+ 5: "FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH",
+ 6: "FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY",
+ 7: "FPT_TYPE_INLINE_MITIGATIONS_EXIST",
+ }
+ FalsePositiveDetermination_Type_value = map[string]int32{
+ "FPT_TYPE_UNSPECIFIED": 0,
+ "FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED": 1,
+ "FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH": 2,
+ "FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED": 3,
+ "FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE": 4,
+ "FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH": 5,
+ "FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY": 6,
+ "FPT_TYPE_INLINE_MITIGATIONS_EXIST": 7,
+ }
+)
+
+func (x FalsePositiveDetermination_Type) Enum() *FalsePositiveDetermination_Type {
+ p := new(FalsePositiveDetermination_Type)
+ *p = x
+ return p
+}
+
+func (x FalsePositiveDetermination_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (FalsePositiveDetermination_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_advisory_platform_proto_enumTypes[2].Descriptor()
+}
+
+func (FalsePositiveDetermination_Type) Type() protoreflect.EnumType {
+ return &file_advisory_platform_proto_enumTypes[2]
+}
+
+func (x FalsePositiveDetermination_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use FalsePositiveDetermination_Type.Descriptor instead.
+func (FalsePositiveDetermination_Type) EnumDescriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{7, 0}
+}
+
+type VulnerabilityMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the identifier of this specific vuln.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"`
+ Details string `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"`
+ References []*Reference `protobuf:"bytes,4,rep,name=references,proto3" json:"references,omitempty"`
+ Severity []*Severity `protobuf:"bytes,5,rep,name=severity,proto3" json:"severity,omitempty"`
+}
+
+func (x *VulnerabilityMetadata) Reset() {
+ *x = VulnerabilityMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityMetadata) ProtoMessage() {}
+
+func (x *VulnerabilityMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityMetadata.ProtoReflect.Descriptor instead.
+func (*VulnerabilityMetadata) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *VulnerabilityMetadata) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnerabilityMetadata) GetSummary() string {
+ if x != nil {
+ return x.Summary
+ }
+ return ""
+}
+
+func (x *VulnerabilityMetadata) GetDetails() string {
+ if x != nil {
+ return x.Details
+ }
+ return ""
+}
+
+func (x *VulnerabilityMetadata) GetReferences() []*Reference {
+ if x != nil {
+ return x.References
+ }
+ return nil
+}
+
+func (x *VulnerabilityMetadata) GetSeverity() []*Severity {
+ if x != nil {
+ return x.Severity
+ }
+ return nil
+}
+
+type Reference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type Reference_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.Reference_Type" json:"type,omitempty"`
+ Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
+}
+
+func (x *Reference) Reset() {
+ *x = Reference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Reference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Reference) ProtoMessage() {}
+
+func (x *Reference) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Reference.ProtoReflect.Descriptor instead.
+func (*Reference) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Reference) GetType() Reference_Type {
+ if x != nil {
+ return x.Type
+ }
+ return Reference_UNSPECIFIED
+}
+
+func (x *Reference) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
+type Severity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // CVSS version standard.
+ Type Severity_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.Severity_Type" json:"type,omitempty"`
+ // Vector string representing CVSS score based on type.
+ Score string `protobuf:"bytes,2,opt,name=score,proto3" json:"score,omitempty"`
+}
+
+func (x *Severity) Reset() {
+ *x = Severity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Severity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Severity) ProtoMessage() {}
+
+func (x *Severity) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Severity.ProtoReflect.Descriptor instead.
+func (*Severity) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Severity) GetType() Severity_Type {
+ if x != nil {
+ return x.Type
+ }
+ return Severity_UNSPECIFIED
+}
+
+func (x *Severity) GetScore() string {
+ if x != nil {
+ return x.Score
+ }
+ return ""
+}
+
+type Advisory struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the identifier of this specific advisory.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Events []*Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"`
+ Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"`
+}
+
+func (x *Advisory) Reset() {
+ *x = Advisory{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Advisory) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Advisory) ProtoMessage() {}
+
+func (x *Advisory) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Advisory.ProtoReflect.Descriptor instead.
+func (*Advisory) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *Advisory) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Advisory) GetEvents() []*Event {
+ if x != nil {
+ return x.Events
+ }
+ return nil
+}
+
+func (x *Advisory) GetAliases() []string {
+ if x != nil {
+ return x.Aliases
+ }
+ return nil
+}
+
+type Document struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Advisories []*Advisory `protobuf:"bytes,2,rep,name=advisories,proto3" json:"advisories,omitempty"`
+}
+
+func (x *Document) Reset() {
+ *x = Document{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Document) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Document) ProtoMessage() {}
+
+func (x *Document) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Document.ProtoReflect.Descriptor instead.
+func (*Document) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Document) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Document) GetAdvisories() []*Advisory {
+ if x != nil {
+ return x.Advisories
+ }
+ return nil
+}
+
+type Event struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ // Types that are assignable to Data:
+ //
+ // *Event_TruePositiveDetermination
+ // *Event_FalsePositiveDetermination
+ // *Event_Fixed
+ // *Event_Detection
+ // *Event_AnalysisNotPlanned
+ // *Event_FixNotPlanned
+ // *Event_PendingUpstreamFix
+ Data isEvent_Data `protobuf_oneof:"data"`
+}
+
+func (x *Event) Reset() {
+ *x = Event{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Event) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Event) ProtoMessage() {}
+
+func (x *Event) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Event.ProtoReflect.Descriptor instead.
+func (*Event) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Event) GetTimestamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Timestamp
+ }
+ return nil
+}
+
+func (m *Event) GetData() isEvent_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (x *Event) GetTruePositiveDetermination() *TruePositiveDetermination {
+ if x, ok := x.GetData().(*Event_TruePositiveDetermination); ok {
+ return x.TruePositiveDetermination
+ }
+ return nil
+}
+
+func (x *Event) GetFalsePositiveDetermination() *FalsePositiveDetermination {
+ if x, ok := x.GetData().(*Event_FalsePositiveDetermination); ok {
+ return x.FalsePositiveDetermination
+ }
+ return nil
+}
+
+func (x *Event) GetFixed() *Fixed {
+ if x, ok := x.GetData().(*Event_Fixed); ok {
+ return x.Fixed
+ }
+ return nil
+}
+
+func (x *Event) GetDetection() *Detection {
+ if x, ok := x.GetData().(*Event_Detection); ok {
+ return x.Detection
+ }
+ return nil
+}
+
+func (x *Event) GetAnalysisNotPlanned() *AnalysisNotPlanned {
+ if x, ok := x.GetData().(*Event_AnalysisNotPlanned); ok {
+ return x.AnalysisNotPlanned
+ }
+ return nil
+}
+
+func (x *Event) GetFixNotPlanned() *FixNotPlanned {
+ if x, ok := x.GetData().(*Event_FixNotPlanned); ok {
+ return x.FixNotPlanned
+ }
+ return nil
+}
+
+func (x *Event) GetPendingUpstreamFix() *PendingUpstreamFix {
+ if x, ok := x.GetData().(*Event_PendingUpstreamFix); ok {
+ return x.PendingUpstreamFix
+ }
+ return nil
+}
+
+type isEvent_Data interface {
+ isEvent_Data()
+}
+
+type Event_TruePositiveDetermination struct {
+ TruePositiveDetermination *TruePositiveDetermination `protobuf:"bytes,10,opt,name=true_positive_determination,json=truePositiveDetermination,proto3,oneof"`
+}
+
+type Event_FalsePositiveDetermination struct {
+ FalsePositiveDetermination *FalsePositiveDetermination `protobuf:"bytes,11,opt,name=false_positive_determination,json=falsePositiveDetermination,proto3,oneof"`
+}
+
+type Event_Fixed struct {
+ Fixed *Fixed `protobuf:"bytes,12,opt,name=fixed,proto3,oneof"`
+}
+
+type Event_Detection struct {
+ Detection *Detection `protobuf:"bytes,13,opt,name=detection,proto3,oneof"`
+}
+
+type Event_AnalysisNotPlanned struct {
+ AnalysisNotPlanned *AnalysisNotPlanned `protobuf:"bytes,14,opt,name=analysis_not_planned,json=analysisNotPlanned,proto3,oneof"`
+}
+
+type Event_FixNotPlanned struct {
+ FixNotPlanned *FixNotPlanned `protobuf:"bytes,15,opt,name=fix_not_planned,json=fixNotPlanned,proto3,oneof"`
+}
+
+type Event_PendingUpstreamFix struct {
+ PendingUpstreamFix *PendingUpstreamFix `protobuf:"bytes,16,opt,name=pending_upstream_fix,json=pendingUpstreamFix,proto3,oneof"`
+}
+
+func (*Event_TruePositiveDetermination) isEvent_Data() {}
+
+func (*Event_FalsePositiveDetermination) isEvent_Data() {}
+
+func (*Event_Fixed) isEvent_Data() {}
+
+func (*Event_Detection) isEvent_Data() {}
+
+func (*Event_AnalysisNotPlanned) isEvent_Data() {}
+
+func (*Event_FixNotPlanned) isEvent_Data() {}
+
+func (*Event_PendingUpstreamFix) isEvent_Data() {}
+
+type TruePositiveDetermination struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
+}
+
+func (x *TruePositiveDetermination) Reset() {
+ *x = TruePositiveDetermination{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TruePositiveDetermination) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TruePositiveDetermination) ProtoMessage() {}
+
+func (x *TruePositiveDetermination) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TruePositiveDetermination.ProtoReflect.Descriptor instead.
+func (*TruePositiveDetermination) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *TruePositiveDetermination) GetNote() string {
+ if x != nil {
+ return x.Note
+ }
+ return ""
+}
+
+type FalsePositiveDetermination struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Type FalsePositiveDetermination_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.advisory.FalsePositiveDetermination_Type" json:"type,omitempty"`
+ Note string `protobuf:"bytes,2,opt,name=note,proto3" json:"note,omitempty"`
+}
+
+func (x *FalsePositiveDetermination) Reset() {
+ *x = FalsePositiveDetermination{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FalsePositiveDetermination) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FalsePositiveDetermination) ProtoMessage() {}
+
+func (x *FalsePositiveDetermination) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use FalsePositiveDetermination.ProtoReflect.Descriptor instead.
+func (*FalsePositiveDetermination) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *FalsePositiveDetermination) GetType() FalsePositiveDetermination_Type {
+ if x != nil {
+ return x.Type
+ }
+ return FalsePositiveDetermination_FPT_TYPE_UNSPECIFIED
+}
+
+func (x *FalsePositiveDetermination) GetNote() string {
+ if x != nil {
+ return x.Note
+ }
+ return ""
+}
+
+type Fixed struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ FixedVersion string `protobuf:"bytes,1,opt,name=fixed_version,json=fixedVersion,proto3" json:"fixed_version,omitempty"`
+}
+
+func (x *Fixed) Reset() {
+ *x = Fixed{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Fixed) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fixed) ProtoMessage() {}
+
+func (x *Fixed) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Fixed.ProtoReflect.Descriptor instead.
+func (*Fixed) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *Fixed) GetFixedVersion() string {
+ if x != nil {
+ return x.FixedVersion
+ }
+ return ""
+}
+
+type Detection struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Type:
+ //
+ // *Detection_Nvdapi
+ // *Detection_Manual
+ Type isDetection_Type `protobuf_oneof:"type"`
+}
+
+func (x *Detection) Reset() {
+ *x = Detection{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Detection) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Detection) ProtoMessage() {}
+
+func (x *Detection) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Detection.ProtoReflect.Descriptor instead.
+func (*Detection) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{9}
+}
+
+func (m *Detection) GetType() isDetection_Type {
+ if m != nil {
+ return m.Type
+ }
+ return nil
+}
+
+func (x *Detection) GetNvdapi() *Detection_DetectionTypeNVDAPI {
+ if x, ok := x.GetType().(*Detection_Nvdapi); ok {
+ return x.Nvdapi
+ }
+ return nil
+}
+
+func (x *Detection) GetManual() *Detection_DetectionTypeManual {
+ if x, ok := x.GetType().(*Detection_Manual); ok {
+ return x.Manual
+ }
+ return nil
+}
+
+type isDetection_Type interface {
+ isDetection_Type()
+}
+
+type Detection_Nvdapi struct {
+ Nvdapi *Detection_DetectionTypeNVDAPI `protobuf:"bytes,1,opt,name=nvdapi,proto3,oneof"`
+}
+
+type Detection_Manual struct {
+ Manual *Detection_DetectionTypeManual `protobuf:"bytes,2,opt,name=manual,proto3,oneof"`
+}
+
+func (*Detection_Nvdapi) isDetection_Type() {}
+
+func (*Detection_Manual) isDetection_Type() {}
+
+type AnalysisNotPlanned struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
+}
+
+func (x *AnalysisNotPlanned) Reset() {
+ *x = AnalysisNotPlanned{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AnalysisNotPlanned) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AnalysisNotPlanned) ProtoMessage() {}
+
+func (x *AnalysisNotPlanned) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AnalysisNotPlanned.ProtoReflect.Descriptor instead.
+func (*AnalysisNotPlanned) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *AnalysisNotPlanned) GetNote() string {
+ if x != nil {
+ return x.Note
+ }
+ return ""
+}
+
+type FixNotPlanned struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
+}
+
+func (x *FixNotPlanned) Reset() {
+ *x = FixNotPlanned{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FixNotPlanned) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FixNotPlanned) ProtoMessage() {}
+
+func (x *FixNotPlanned) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use FixNotPlanned.ProtoReflect.Descriptor instead.
+func (*FixNotPlanned) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *FixNotPlanned) GetNote() string {
+ if x != nil {
+ return x.Note
+ }
+ return ""
+}
+
+type PendingUpstreamFix struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Note string `protobuf:"bytes,1,opt,name=note,proto3" json:"note,omitempty"`
+}
+
+func (x *PendingUpstreamFix) Reset() {
+ *x = PendingUpstreamFix{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PendingUpstreamFix) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PendingUpstreamFix) ProtoMessage() {}
+
+func (x *PendingUpstreamFix) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PendingUpstreamFix.ProtoReflect.Descriptor instead.
+func (*PendingUpstreamFix) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *PendingUpstreamFix) GetNote() string {
+ if x != nil {
+ return x.Note
+ }
+ return ""
+}
+
+type DocumentFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the id of a package.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Cves []string `protobuf:"bytes,2,rep,name=cves,proto3" json:"cves,omitempty"`
+}
+
+func (x *DocumentFilter) Reset() {
+ *x = DocumentFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DocumentFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DocumentFilter) ProtoMessage() {}
+
+func (x *DocumentFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DocumentFilter.ProtoReflect.Descriptor instead.
+func (*DocumentFilter) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *DocumentFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *DocumentFilter) GetCves() []string {
+ if x != nil {
+ return x.Cves
+ }
+ return nil
+}
+
+type DocumentList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Document `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *DocumentList) Reset() {
+ *x = DocumentList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DocumentList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DocumentList) ProtoMessage() {}
+
+func (x *DocumentList) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DocumentList.ProtoReflect.Descriptor instead.
+func (*DocumentList) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *DocumentList) GetItems() []*Document {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type VulnerabilityMetadataFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the id of a vuln.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *VulnerabilityMetadataFilter) Reset() {
+ *x = VulnerabilityMetadataFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityMetadataFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityMetadataFilter) ProtoMessage() {}
+
+func (x *VulnerabilityMetadataFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityMetadataFilter.ProtoReflect.Descriptor instead.
+func (*VulnerabilityMetadataFilter) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *VulnerabilityMetadataFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type VulnerabilityMetadataList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*VulnerabilityMetadata `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *VulnerabilityMetadataList) Reset() {
+ *x = VulnerabilityMetadataList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityMetadataList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityMetadataList) ProtoMessage() {}
+
+func (x *VulnerabilityMetadataList) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityMetadataList.ProtoReflect.Descriptor instead.
+func (*VulnerabilityMetadataList) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *VulnerabilityMetadataList) GetItems() []*VulnerabilityMetadata {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type Detection_DetectionTypeNVDAPI struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CpeSearched string `protobuf:"bytes,1,opt,name=cpe_searched,json=cpeSearched,proto3" json:"cpe_searched,omitempty"`
+ CpeFound string `protobuf:"bytes,2,opt,name=cpe_found,json=cpeFound,proto3" json:"cpe_found,omitempty"`
+}
+
+func (x *Detection_DetectionTypeNVDAPI) Reset() {
+ *x = Detection_DetectionTypeNVDAPI{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Detection_DetectionTypeNVDAPI) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Detection_DetectionTypeNVDAPI) ProtoMessage() {}
+
+func (x *Detection_DetectionTypeNVDAPI) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Detection_DetectionTypeNVDAPI.ProtoReflect.Descriptor instead.
+func (*Detection_DetectionTypeNVDAPI) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{9, 0}
+}
+
+func (x *Detection_DetectionTypeNVDAPI) GetCpeSearched() string {
+ if x != nil {
+ return x.CpeSearched
+ }
+ return ""
+}
+
+func (x *Detection_DetectionTypeNVDAPI) GetCpeFound() string {
+ if x != nil {
+ return x.CpeFound
+ }
+ return ""
+}
+
+type Detection_DetectionTypeManual struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *Detection_DetectionTypeManual) Reset() {
+ *x = Detection_DetectionTypeManual{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_advisory_platform_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Detection_DetectionTypeManual) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Detection_DetectionTypeManual) ProtoMessage() {}
+
+func (x *Detection_DetectionTypeManual) ProtoReflect() protoreflect.Message {
+ mi := &file_advisory_platform_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Detection_DetectionTypeManual.ProtoReflect.Descriptor instead.
+func (*Detection_DetectionTypeManual) Descriptor() ([]byte, []int) {
+ return file_advisory_platform_proto_rawDescGZIP(), []int{9, 1}
+}
+
+var File_advisory_platform_proto protoreflect.FileDescriptor
+
+var file_advisory_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8,
+ 0x01, 0x0a, 0x15, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d,
+ 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61,
+ 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x0a,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74,
+ 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64,
+ 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x09, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69,
+ 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54,
+ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x9a, 0x01, 0x0a, 0x04,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52,
+ 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x54, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x02,
+ 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12,
+ 0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x55, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12,
+ 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x46,
+ 0x49, 0x58, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x54, 0x52, 0x4f, 0x44, 0x55, 0x43,
+ 0x45, 0x44, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10,
+ 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x09, 0x12,
+ 0x07, 0x0a, 0x03, 0x57, 0x45, 0x42, 0x10, 0x0a, 0x22, 0xa1, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x76,
+ 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
+ 0x72, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65,
+ 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x04,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x32,
+ 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x33, 0x10, 0x02, 0x12,
+ 0x0b, 0x0a, 0x07, 0x43, 0x56, 0x53, 0x53, 0x5f, 0x56, 0x34, 0x10, 0x03, 0x22, 0x71, 0x0a, 0x08,
+ 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x22,
+ 0x62, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x41,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72,
+ 0x69, 0x65, 0x73, 0x22, 0xeb, 0x05, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a,
+ 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x72, 0x75, 0x65, 0x5f,
+ 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x75, 0x65,
+ 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x74, 0x72, 0x75, 0x65, 0x50, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x1c, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74,
+ 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46,
+ 0x69, 0x78, 0x65, 0x64, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12, 0x47, 0x0a,
+ 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e,
+ 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x14, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
+ 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0e,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73,
+ 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50,
+ 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
+ 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0f,
+ 0x66, 0x69, 0x78, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18,
+ 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69,
+ 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e,
+ 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e,
+ 0x6e, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x14, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x75,
+ 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x66, 0x69, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79,
+ 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
+ 0x46, 0x69, 0x78, 0x48, 0x00, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70,
+ 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x46, 0x69, 0x78, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x2f, 0x0a, 0x19, 0x54, 0x72, 0x75, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76,
+ 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f,
+ 0x74, 0x65, 0x22, 0x8b, 0x04, 0x0a, 0x1a, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x51, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x3d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x46,
+ 0x61, 0x6c, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65,
+ 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
+ 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x85, 0x03, 0x0a, 0x04, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
+ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x34, 0x0a, 0x30, 0x46,
+ 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42,
+ 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x41, 0x4e, 0x41,
+ 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f,
+ 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42,
+ 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02,
+ 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c,
+ 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52,
+ 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12,
+ 0x34, 0x0a, 0x30, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e,
+ 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
+ 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b,
+ 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x46, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44,
+ 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10, 0x05, 0x12, 0x3e, 0x0a, 0x3a, 0x46, 0x50, 0x54,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45,
+ 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f,
+ 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x41, 0x44,
+ 0x56, 0x45, 0x52, 0x53, 0x41, 0x52, 0x59, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x46, 0x50, 0x54,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x49, 0x54,
+ 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07,
+ 0x22, 0x2c, 0x0a, 0x05, 0x46, 0x69, 0x78, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x78,
+ 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf,
+ 0x02, 0x0a, 0x09, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x06,
+ 0x6e, 0x76, 0x64, 0x61, 0x70, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x79, 0x70, 0x65, 0x4e, 0x56, 0x44, 0x41, 0x50, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x76, 0x64,
+ 0x61, 0x70, 0x69, 0x12, 0x55, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
+ 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c,
+ 0x48, 0x00, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x1a, 0x55, 0x0a, 0x13, 0x44, 0x65,
+ 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x56, 0x44, 0x41, 0x50,
+ 0x49, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70, 0x65, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x65, 0x53, 0x65, 0x61, 0x72,
+ 0x63, 0x68, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x65, 0x5f, 0x66, 0x6f, 0x75, 0x6e,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x70, 0x65, 0x46, 0x6f, 0x75, 0x6e,
+ 0x64, 0x1a, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
+ 0x70, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x22, 0x28, 0x0a, 0x12, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x50,
+ 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x23, 0x0a, 0x0d, 0x46, 0x69,
+ 0x78, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22,
+ 0x28, 0x0a, 0x12, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65,
+ 0x61, 0x6d, 0x46, 0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x34, 0x0a, 0x0e, 0x44, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63,
+ 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x76, 0x65, 0x73, 0x22,
+ 0x4c, 0x0a, 0x0c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x3c, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2d, 0x0a,
+ 0x1b, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x66, 0x0a, 0x19,
+ 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
+ 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x32, 0xdf, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
+ 0x79, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x12, 0x91, 0x01, 0x0a, 0x0d, 0x4c, 0x69,
+ 0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f,
+ 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x12, 0xb6, 0x01,
+ 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65,
+ 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76,
+ 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2e, 0x76,
+ 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x64, 0x76, 0x69, 0x73,
+ 0x6f, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x64,
+ 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
+}
+
+var (
+ file_advisory_platform_proto_rawDescOnce sync.Once
+ file_advisory_platform_proto_rawDescData = file_advisory_platform_proto_rawDesc
+)
+
+func file_advisory_platform_proto_rawDescGZIP() []byte {
+ file_advisory_platform_proto_rawDescOnce.Do(func() {
+ file_advisory_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_advisory_platform_proto_rawDescData)
+ })
+ return file_advisory_platform_proto_rawDescData
+}
+
+var file_advisory_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_advisory_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_advisory_platform_proto_goTypes = []interface{}{
+ (Reference_Type)(0), // 0: chainguard.platform.advisory.Reference.Type
+ (Severity_Type)(0), // 1: chainguard.platform.advisory.Severity.Type
+ (FalsePositiveDetermination_Type)(0), // 2: chainguard.platform.advisory.FalsePositiveDetermination.Type
+ (*VulnerabilityMetadata)(nil), // 3: chainguard.platform.advisory.VulnerabilityMetadata
+ (*Reference)(nil), // 4: chainguard.platform.advisory.Reference
+ (*Severity)(nil), // 5: chainguard.platform.advisory.Severity
+ (*Advisory)(nil), // 6: chainguard.platform.advisory.Advisory
+ (*Document)(nil), // 7: chainguard.platform.advisory.Document
+ (*Event)(nil), // 8: chainguard.platform.advisory.Event
+ (*TruePositiveDetermination)(nil), // 9: chainguard.platform.advisory.TruePositiveDetermination
+ (*FalsePositiveDetermination)(nil), // 10: chainguard.platform.advisory.FalsePositiveDetermination
+ (*Fixed)(nil), // 11: chainguard.platform.advisory.Fixed
+ (*Detection)(nil), // 12: chainguard.platform.advisory.Detection
+ (*AnalysisNotPlanned)(nil), // 13: chainguard.platform.advisory.AnalysisNotPlanned
+ (*FixNotPlanned)(nil), // 14: chainguard.platform.advisory.FixNotPlanned
+ (*PendingUpstreamFix)(nil), // 15: chainguard.platform.advisory.PendingUpstreamFix
+ (*DocumentFilter)(nil), // 16: chainguard.platform.advisory.DocumentFilter
+ (*DocumentList)(nil), // 17: chainguard.platform.advisory.DocumentList
+ (*VulnerabilityMetadataFilter)(nil), // 18: chainguard.platform.advisory.VulnerabilityMetadataFilter
+ (*VulnerabilityMetadataList)(nil), // 19: chainguard.platform.advisory.VulnerabilityMetadataList
+ (*Detection_DetectionTypeNVDAPI)(nil), // 20: chainguard.platform.advisory.Detection.DetectionTypeNVDAPI
+ (*Detection_DetectionTypeManual)(nil), // 21: chainguard.platform.advisory.Detection.DetectionTypeManual
+ (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp
+}
+var file_advisory_platform_proto_depIdxs = []int32{
+ 4, // 0: chainguard.platform.advisory.VulnerabilityMetadata.references:type_name -> chainguard.platform.advisory.Reference
+ 5, // 1: chainguard.platform.advisory.VulnerabilityMetadata.severity:type_name -> chainguard.platform.advisory.Severity
+ 0, // 2: chainguard.platform.advisory.Reference.type:type_name -> chainguard.platform.advisory.Reference.Type
+ 1, // 3: chainguard.platform.advisory.Severity.type:type_name -> chainguard.platform.advisory.Severity.Type
+ 8, // 4: chainguard.platform.advisory.Advisory.events:type_name -> chainguard.platform.advisory.Event
+ 6, // 5: chainguard.platform.advisory.Document.advisories:type_name -> chainguard.platform.advisory.Advisory
+ 22, // 6: chainguard.platform.advisory.Event.timestamp:type_name -> google.protobuf.Timestamp
+ 9, // 7: chainguard.platform.advisory.Event.true_positive_determination:type_name -> chainguard.platform.advisory.TruePositiveDetermination
+ 10, // 8: chainguard.platform.advisory.Event.false_positive_determination:type_name -> chainguard.platform.advisory.FalsePositiveDetermination
+ 11, // 9: chainguard.platform.advisory.Event.fixed:type_name -> chainguard.platform.advisory.Fixed
+ 12, // 10: chainguard.platform.advisory.Event.detection:type_name -> chainguard.platform.advisory.Detection
+ 13, // 11: chainguard.platform.advisory.Event.analysis_not_planned:type_name -> chainguard.platform.advisory.AnalysisNotPlanned
+ 14, // 12: chainguard.platform.advisory.Event.fix_not_planned:type_name -> chainguard.platform.advisory.FixNotPlanned
+ 15, // 13: chainguard.platform.advisory.Event.pending_upstream_fix:type_name -> chainguard.platform.advisory.PendingUpstreamFix
+ 2, // 14: chainguard.platform.advisory.FalsePositiveDetermination.type:type_name -> chainguard.platform.advisory.FalsePositiveDetermination.Type
+ 20, // 15: chainguard.platform.advisory.Detection.nvdapi:type_name -> chainguard.platform.advisory.Detection.DetectionTypeNVDAPI
+ 21, // 16: chainguard.platform.advisory.Detection.manual:type_name -> chainguard.platform.advisory.Detection.DetectionTypeManual
+ 7, // 17: chainguard.platform.advisory.DocumentList.items:type_name -> chainguard.platform.advisory.Document
+ 3, // 18: chainguard.platform.advisory.VulnerabilityMetadataList.items:type_name -> chainguard.platform.advisory.VulnerabilityMetadata
+ 16, // 19: chainguard.platform.advisory.SecurityAdvisory.ListDocuments:input_type -> chainguard.platform.advisory.DocumentFilter
+ 18, // 20: chainguard.platform.advisory.SecurityAdvisory.ListVulnerabilityMetadata:input_type -> chainguard.platform.advisory.VulnerabilityMetadataFilter
+ 17, // 21: chainguard.platform.advisory.SecurityAdvisory.ListDocuments:output_type -> chainguard.platform.advisory.DocumentList
+ 19, // 22: chainguard.platform.advisory.SecurityAdvisory.ListVulnerabilityMetadata:output_type -> chainguard.platform.advisory.VulnerabilityMetadataList
+ 21, // [21:23] is the sub-list for method output_type
+ 19, // [19:21] is the sub-list for method input_type
+ 19, // [19:19] is the sub-list for extension type_name
+ 19, // [19:19] is the sub-list for extension extendee
+ 0, // [0:19] is the sub-list for field type_name
+}
+
+func init() { file_advisory_platform_proto_init() }
+func file_advisory_platform_proto_init() {
+ if File_advisory_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_advisory_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityMetadata); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Reference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Severity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Advisory); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Document); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Event); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TruePositiveDetermination); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FalsePositiveDetermination); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Fixed); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Detection); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AnalysisNotPlanned); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FixNotPlanned); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PendingUpstreamFix); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DocumentFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DocumentList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityMetadataFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityMetadataList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Detection_DetectionTypeNVDAPI); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_advisory_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Detection_DetectionTypeManual); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_advisory_platform_proto_msgTypes[5].OneofWrappers = []interface{}{
+ (*Event_TruePositiveDetermination)(nil),
+ (*Event_FalsePositiveDetermination)(nil),
+ (*Event_Fixed)(nil),
+ (*Event_Detection)(nil),
+ (*Event_AnalysisNotPlanned)(nil),
+ (*Event_FixNotPlanned)(nil),
+ (*Event_PendingUpstreamFix)(nil),
+ }
+ file_advisory_platform_proto_msgTypes[9].OneofWrappers = []interface{}{
+ (*Detection_Nvdapi)(nil),
+ (*Detection_Manual)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_advisory_platform_proto_rawDesc,
+ NumEnums: 3,
+ NumMessages: 19,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_advisory_platform_proto_goTypes,
+ DependencyIndexes: file_advisory_platform_proto_depIdxs,
+ EnumInfos: file_advisory_platform_proto_enumTypes,
+ MessageInfos: file_advisory_platform_proto_msgTypes,
+ }.Build()
+ File_advisory_platform_proto = out.File
+ file_advisory_platform_proto_rawDesc = nil
+ file_advisory_platform_proto_goTypes = nil
+ file_advisory_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.gw.go b/proto/platform/advisory/v1/advisory.platform.pb.gw.go
new file mode 100644
index 00000000..a6d9166b
--- /dev/null
+++ b/proto/platform/advisory/v1/advisory.platform.pb.gw.go
@@ -0,0 +1,256 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: advisory.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_SecurityAdvisory_ListDocuments_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SecurityAdvisory_ListDocuments_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityAdvisoryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DocumentFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListDocuments_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListDocuments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SecurityAdvisory_ListDocuments_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityAdvisoryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DocumentFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListDocuments_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListDocuments(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_SecurityAdvisory_ListVulnerabilityMetadata_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityAdvisoryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnerabilityMetadataFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListVulnerabilityMetadata_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListVulnerabilityMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityAdvisoryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnerabilityMetadataFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityAdvisory_ListVulnerabilityMetadata_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListVulnerabilityMetadata(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterSecurityAdvisoryHandlerServer registers the http handlers for service SecurityAdvisory to "mux".
+// UnaryRPC :call SecurityAdvisoryServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSecurityAdvisoryHandlerFromEndpoint instead.
+func RegisterSecurityAdvisoryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SecurityAdvisoryServer) error {
+
+ mux.Handle("GET", pattern_SecurityAdvisory_ListDocuments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments", runtime.WithHTTPPathPattern("/advisory/v1/documents"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SecurityAdvisory_ListDocuments_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityAdvisory_ListDocuments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SecurityAdvisory_ListVulnerabilityMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata", runtime.WithHTTPPathPattern("/advisory/v1/metadata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterSecurityAdvisoryHandlerFromEndpoint is same as RegisterSecurityAdvisoryHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterSecurityAdvisoryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterSecurityAdvisoryHandler(ctx, mux, conn)
+}
+
+// RegisterSecurityAdvisoryHandler registers the http handlers for service SecurityAdvisory to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterSecurityAdvisoryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterSecurityAdvisoryHandlerClient(ctx, mux, NewSecurityAdvisoryClient(conn))
+}
+
+// RegisterSecurityAdvisoryHandlerClient registers the http handlers for service SecurityAdvisory
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SecurityAdvisoryClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SecurityAdvisoryClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "SecurityAdvisoryClient" to call the correct interceptors.
+func RegisterSecurityAdvisoryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SecurityAdvisoryClient) error {
+
+ mux.Handle("GET", pattern_SecurityAdvisory_ListDocuments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments", runtime.WithHTTPPathPattern("/advisory/v1/documents"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SecurityAdvisory_ListDocuments_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityAdvisory_ListDocuments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SecurityAdvisory_ListVulnerabilityMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata", runtime.WithHTTPPathPattern("/advisory/v1/metadata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityAdvisory_ListVulnerabilityMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_SecurityAdvisory_ListDocuments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"advisory", "v1", "documents"}, ""))
+
+ pattern_SecurityAdvisory_ListVulnerabilityMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"advisory", "v1", "metadata"}, ""))
+)
+
+var (
+ forward_SecurityAdvisory_ListDocuments_0 = runtime.ForwardResponseMessage
+
+ forward_SecurityAdvisory_ListVulnerabilityMetadata_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/advisory/v1/advisory.platform.proto b/proto/platform/advisory/v1/advisory.platform.proto
new file mode 100644
index 00000000..9c79b371
--- /dev/null
+++ b/proto/platform/advisory/v1/advisory.platform.proto
@@ -0,0 +1,233 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/advisory/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.advisory.v1";
+option java_outer_classname = "PlatformAdvisoryProto";
+
+package chainguard.platform.advisory;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+
+service SecurityAdvisory {
+ rpc ListDocuments(DocumentFilter) returns (DocumentList) {
+ option (google.api.http) = {
+ get: "/advisory/v1/documents"
+ };
+ option (chainguard.annotations.iam) = {
+ // This method doesn't require authentication.
+ disabled: {}
+ };
+ }
+
+ rpc ListVulnerabilityMetadata(VulnerabilityMetadataFilter) returns (VulnerabilityMetadataList) {
+ option (google.api.http) = {
+ get: "/advisory/v1/metadata"
+ };
+ option (chainguard.annotations.iam) = {
+ // This method doesn't require authentication.
+ disabled: {}
+ };
+ }
+}
+
+message VulnerabilityMetadata {
+ // id is the identifier of this specific vuln.
+ string id = 1;
+
+ string summary = 2;
+
+ string details = 3;
+
+ repeated Reference references = 4;
+
+ repeated Severity severity = 5;
+}
+
+message Reference {
+ Type type = 1;
+
+ string url = 2;
+
+ enum Type {
+ // The "unset" value.
+ UNSPECIFIED = 0;
+
+ // Published security advisory for the vulnerability.
+ ADVISORY = 1;
+
+ // Article or blog post describing the vulnerability.
+ ARTICLE = 2;
+
+ // Scanner or tool that allows detection in prod environments.
+ DETECTION = 3;
+
+ // Social media discussion about vuln.
+ DISCUSSION = 4;
+
+ // Report on vuln.
+ REPORT = 5;
+
+ // Source code browser link to fix.
+ FIX = 6;
+
+ // Source code browser link to introduction of vuln.
+ INTRODUCED = 7;
+
+ // Home web page for package.
+ PACKAGE = 8;
+
+ // Demonstration of validity of vuln claim.
+ EVIDENCE = 9;
+
+ // Web page of unspecified kind.
+ WEB = 10;
+ }
+}
+
+message Severity {
+ // CVSS version standard.
+ Type type = 1;
+
+ // Vector string representing CVSS score based on type.
+ string score = 2;
+
+ enum Type {
+ // The "unset" value.
+ UNSPECIFIED = 0;
+
+ // CVSS v2
+ CVSS_V2 = 1;
+
+ // CVSS >= 3.0 and < 4.0
+ CVSS_V3 = 2;
+
+ // CVSS >= 4.0 and < 5.0
+ CVSS_V4 = 3;
+ }
+}
+
+message Advisory {
+ // id is the identifier of this specific advisory.
+ string id = 1;
+
+ repeated Event events = 2;
+
+ repeated string aliases = 3;
+}
+
+message Document {
+ string id = 1;
+
+ repeated Advisory advisories = 2;
+}
+
+message Event {
+ google.protobuf.Timestamp timestamp = 1;
+
+ oneof data {
+ TruePositiveDetermination true_positive_determination = 10;
+
+ FalsePositiveDetermination false_positive_determination = 11;
+
+ Fixed fixed = 12;
+
+ Detection detection = 13;
+
+ AnalysisNotPlanned analysis_not_planned = 14;
+
+ FixNotPlanned fix_not_planned = 15;
+
+ PendingUpstreamFix pending_upstream_fix = 16;
+ }
+}
+
+message TruePositiveDetermination {
+ string note = 1;
+}
+
+message FalsePositiveDetermination {
+ Type type = 1;
+
+ string note = 2;
+
+ enum Type {
+ // The "unset" value.
+ FPT_TYPE_UNSPECIFIED = 0;
+
+ // VEX: vulnerable_code_not_present.
+ FPT_TYPE_VULNERABILITY_RECORD_ANALYSIS_CONTESTED = 1;
+
+ // VEX: component_not_present.
+ FPT_TYPE_COMPONENT_VULNERABILITY_MISMATCH = 2;
+
+ // VEX: vulnerable_code_not_present.
+ FPT_TYPE_VULNERABLE_CODE_VERSION_NOT_USED = 3;
+
+ // VEX: vulnerable_code_not_present.
+ FPT_TYPE_VULNERABLE_CODE_NOT_INCLUDED_IN_PACKAGE = 4;
+
+ // VEX: vulnerable_code_not_in_execute_path.
+ FPT_TYPE_VULNERABLE_CODE_NOT_IN_EXECUTION_PATH = 5;
+
+ // VEX: vulnerable_code_cannot_be_controlled_by_adversary.
+ FPT_TYPE_VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY = 6;
+
+ // VEX: inline_mitigations_already_exist.
+ FPT_TYPE_INLINE_MITIGATIONS_EXIST = 7;
+ }
+}
+
+message Fixed {
+ string fixed_version = 1;
+}
+
+message Detection {
+ oneof type {
+ DetectionTypeNVDAPI nvdapi = 1;
+
+ DetectionTypeManual manual = 2;
+ }
+
+ message DetectionTypeNVDAPI {
+ string cpe_searched = 1;
+
+ string cpe_found = 2;
+ }
+
+ message DetectionTypeManual {}
+}
+
+message AnalysisNotPlanned {
+ string note = 1;
+}
+
+message FixNotPlanned {
+ string note = 1;
+}
+
+message PendingUpstreamFix {
+ string note = 1;
+}
+
+message DocumentFilter {
+ // id is the id of a package.
+ string id = 1;
+
+ repeated string cves = 2;
+}
+
+message DocumentList {
+ repeated Document items = 1;
+}
+
+message VulnerabilityMetadataFilter {
+ // id is the id of a vuln.
+ string id = 1;
+}
+
+message VulnerabilityMetadataList {
+ repeated VulnerabilityMetadata items = 1;
+}
diff --git a/proto/platform/advisory/v1/advisory.platform_grpc.pb.go b/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
new file mode 100644
index 00000000..a5657e05
--- /dev/null
+++ b/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
@@ -0,0 +1,146 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: advisory.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ SecurityAdvisory_ListDocuments_FullMethodName = "/chainguard.platform.advisory.SecurityAdvisory/ListDocuments"
+ SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName = "/chainguard.platform.advisory.SecurityAdvisory/ListVulnerabilityMetadata"
+)
+
+// SecurityAdvisoryClient is the client API for SecurityAdvisory service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SecurityAdvisoryClient interface {
+ ListDocuments(ctx context.Context, in *DocumentFilter, opts ...grpc.CallOption) (*DocumentList, error)
+ ListVulnerabilityMetadata(ctx context.Context, in *VulnerabilityMetadataFilter, opts ...grpc.CallOption) (*VulnerabilityMetadataList, error)
+}
+
+type securityAdvisoryClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSecurityAdvisoryClient(cc grpc.ClientConnInterface) SecurityAdvisoryClient {
+ return &securityAdvisoryClient{cc}
+}
+
+func (c *securityAdvisoryClient) ListDocuments(ctx context.Context, in *DocumentFilter, opts ...grpc.CallOption) (*DocumentList, error) {
+ out := new(DocumentList)
+ err := c.cc.Invoke(ctx, SecurityAdvisory_ListDocuments_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *securityAdvisoryClient) ListVulnerabilityMetadata(ctx context.Context, in *VulnerabilityMetadataFilter, opts ...grpc.CallOption) (*VulnerabilityMetadataList, error) {
+ out := new(VulnerabilityMetadataList)
+ err := c.cc.Invoke(ctx, SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SecurityAdvisoryServer is the server API for SecurityAdvisory service.
+// All implementations must embed UnimplementedSecurityAdvisoryServer
+// for forward compatibility
+type SecurityAdvisoryServer interface {
+ ListDocuments(context.Context, *DocumentFilter) (*DocumentList, error)
+ ListVulnerabilityMetadata(context.Context, *VulnerabilityMetadataFilter) (*VulnerabilityMetadataList, error)
+ mustEmbedUnimplementedSecurityAdvisoryServer()
+}
+
+// UnimplementedSecurityAdvisoryServer must be embedded to have forward compatible implementations.
+type UnimplementedSecurityAdvisoryServer struct {
+}
+
+func (UnimplementedSecurityAdvisoryServer) ListDocuments(context.Context, *DocumentFilter) (*DocumentList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListDocuments not implemented")
+}
+func (UnimplementedSecurityAdvisoryServer) ListVulnerabilityMetadata(context.Context, *VulnerabilityMetadataFilter) (*VulnerabilityMetadataList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListVulnerabilityMetadata not implemented")
+}
+func (UnimplementedSecurityAdvisoryServer) mustEmbedUnimplementedSecurityAdvisoryServer() {}
+
+// UnsafeSecurityAdvisoryServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SecurityAdvisoryServer will
+// result in compilation errors.
+type UnsafeSecurityAdvisoryServer interface {
+ mustEmbedUnimplementedSecurityAdvisoryServer()
+}
+
+func RegisterSecurityAdvisoryServer(s grpc.ServiceRegistrar, srv SecurityAdvisoryServer) {
+ s.RegisterService(&SecurityAdvisory_ServiceDesc, srv)
+}
+
+func _SecurityAdvisory_ListDocuments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DocumentFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SecurityAdvisoryServer).ListDocuments(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SecurityAdvisory_ListDocuments_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SecurityAdvisoryServer).ListDocuments(ctx, req.(*DocumentFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityAdvisory_ListVulnerabilityMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(VulnerabilityMetadataFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SecurityAdvisoryServer).ListVulnerabilityMetadata(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SecurityAdvisory_ListVulnerabilityMetadata_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SecurityAdvisoryServer).ListVulnerabilityMetadata(ctx, req.(*VulnerabilityMetadataFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// SecurityAdvisory_ServiceDesc is the grpc.ServiceDesc for SecurityAdvisory service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var SecurityAdvisory_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.advisory.SecurityAdvisory",
+ HandlerType: (*SecurityAdvisoryServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ListDocuments",
+ Handler: _SecurityAdvisory_ListDocuments_Handler,
+ },
+ {
+ MethodName: "ListVulnerabilityMetadata",
+ Handler: _SecurityAdvisory_ListVulnerabilityMetadata_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "advisory.platform.proto",
+}
diff --git a/proto/platform/advisory/v1/clients.go b/proto/platform/advisory/v1/clients.go
new file mode 100644
index 00000000..cdabef5b
--- /dev/null
+++ b/proto/platform/advisory/v1/clients.go
@@ -0,0 +1,81 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Clients interface {
+ SecurityAdvisory() SecurityAdvisoryClient
+
+ Close() error
+}
+
+func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
+ uri, err := url.Parse(addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse advisory service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*uri)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ advisory: NewSecurityAdvisoryClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ advisory: NewSecurityAdvisoryClient(conn),
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ advisory SecurityAdvisoryClient
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) SecurityAdvisory() SecurityAdvisoryClient {
+ return c.advisory
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/advisory/v1/doc.go b/proto/platform/advisory/v1/doc.go
new file mode 100644
index 00000000..df562690
--- /dev/null
+++ b/proto/platform/advisory/v1/doc.go
@@ -0,0 +1,10 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing Advisory interactions.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. advisory.platform.proto
+package v1
diff --git a/proto/platform/advisory/v1/test/advisory.go b/proto/platform/advisory/v1/test/advisory.go
new file mode 100644
index 00000000..34cd2f6e
--- /dev/null
+++ b/proto/platform/advisory/v1/test/advisory.go
@@ -0,0 +1,70 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
+)
+
+var _ advisory.Clients = (*MockSecurityAdvisoryClients)(nil)
+
+type MockSecurityAdvisoryClients struct {
+ OnClose error
+
+ SecurityAdvisoryClient MockSecurityAdvisoryClient
+}
+
+func (m MockSecurityAdvisoryClients) SecurityAdvisory() advisory.SecurityAdvisoryClient {
+ return &m.SecurityAdvisoryClient
+}
+
+func (m MockSecurityAdvisoryClients) Close() error {
+ return m.OnClose
+}
+
+var _ advisory.SecurityAdvisoryClient = (*MockSecurityAdvisoryClient)(nil)
+
+type MockSecurityAdvisoryClient struct {
+ OnListDocuments []DocumentsOnList
+ OnListVulnerabilityMetadata []VulnerabilityMetadataOnList
+}
+
+type DocumentsOnList struct {
+ Given *advisory.DocumentFilter
+ List *advisory.DocumentList
+ Error error
+}
+
+type VulnerabilityMetadataOnList struct {
+ Given *advisory.VulnerabilityMetadataFilter
+ List *advisory.VulnerabilityMetadataList
+ Error error
+}
+
+func (m MockSecurityAdvisoryClient) ListDocuments(_ context.Context, given *advisory.DocumentFilter, _ ...grpc.CallOption) (*advisory.DocumentList, error) { //nolint: revive
+ for _, o := range m.OnListDocuments {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSecurityAdvisoryClient) ListVulnerabilityMetadata(_ context.Context, given *advisory.VulnerabilityMetadataFilter, _ ...grpc.CallOption) (*advisory.VulnerabilityMetadataList, error) { //nolint: revive
+ for _, o := range m.OnListVulnerabilityMetadata {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/auth/v1/auth.platform.event.go b/proto/platform/auth/v1/auth.platform.event.go
new file mode 100644
index 00000000..c770ef4b
--- /dev/null
+++ b/proto/platform/auth/v1/auth.platform.event.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Session) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return x.GetGroup(), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Session) CloudEventsSubject() string {
+ return ""
+}
diff --git a/proto/platform/auth/v1/auth.platform.pb.go b/proto/platform/auth/v1/auth.platform.pb.go
new file mode 100644
index 00000000..45718d3f
--- /dev/null
+++ b/proto/platform/auth/v1/auth.platform.pb.go
@@ -0,0 +1,562 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: auth.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v11 "chainguard.dev/sdk/proto/platform/iam/v1"
+ v1 "chainguard.dev/sdk/proto/platform/tenant/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type RegistrationRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // code is an optional encoded invite code, which allows us to register
+ // the caller's identity as a member of a particular group as a particular
+ // role.
+ // +optional
+ Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
+ // cluster_id is an optional cluster id, which simultaneously registers
+ // a Cluster with the Identity. This path must specify an invite code, so
+ // we know where in the IAM hierarchy to link the cluster.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ // identity_id is an optional identity id. If the user already exists, this
+ // by-passes identity registration and continues on to cluster registration
+ // (if applicable)
+ IdentityId string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
+ // cluster_name is an optional name to give the cluster when one is
+ // registered as part of the registration flow.
+ ClusterName string `protobuf:"bytes,4,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
+ // cluster_description is an optional description to give the cluster
+ // when one is registered as part of the registration flow.
+ ClusterDescription string `protobuf:"bytes,5,opt,name=cluster_description,json=clusterDescription,proto3" json:"cluster_description,omitempty"`
+ // enforcer_options defines the enforcer options.
+ EnforcerOptions *v1.Cluster_EnforcerOptions `protobuf:"bytes,6,opt,name=enforcer_options,json=enforcerOptions,proto3" json:"enforcer_options,omitempty"`
+}
+
+func (x *RegistrationRequest) Reset() {
+ *x = RegistrationRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RegistrationRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RegistrationRequest) ProtoMessage() {}
+
+func (x *RegistrationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RegistrationRequest.ProtoReflect.Descriptor instead.
+func (*RegistrationRequest) Descriptor() ([]byte, []int) {
+ return file_auth_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *RegistrationRequest) GetCode() string {
+ if x != nil {
+ return x.Code
+ }
+ return ""
+}
+
+func (x *RegistrationRequest) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+func (x *RegistrationRequest) GetIdentityId() string {
+ if x != nil {
+ return x.IdentityId
+ }
+ return ""
+}
+
+func (x *RegistrationRequest) GetClusterName() string {
+ if x != nil {
+ return x.ClusterName
+ }
+ return ""
+}
+
+func (x *RegistrationRequest) GetClusterDescription() string {
+ if x != nil {
+ return x.ClusterDescription
+ }
+ return ""
+}
+
+func (x *RegistrationRequest) GetEnforcerOptions() *v1.Cluster_EnforcerOptions {
+ if x != nil {
+ return x.EnforcerOptions
+ }
+ return nil
+}
+
+type Session struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // identity, the Chainguard identity id.
+ Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
+ // group, the group this identity has joined by invitation, when an invite
+ // code was supplied.
+ Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
+}
+
+func (x *Session) Reset() {
+ *x = Session{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Session) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Session) ProtoMessage() {}
+
+func (x *Session) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Session.ProtoReflect.Descriptor instead.
+func (*Session) Descriptor() ([]byte, []int) {
+ return file_auth_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Session) GetIdentity() string {
+ if x != nil {
+ return x.Identity
+ }
+ return ""
+}
+
+func (x *Session) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+type WhoAmI struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Issuer is the issuer of the token.
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ // The subject of the token.
+ Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
+ // Audience is who the token is intended for.
+ Audience []string `protobuf:"bytes,3,rep,name=audience,proto3" json:"audience,omitempty"`
+ // When the token expires.
+ Expiry *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiry,proto3" json:"expiry,omitempty"`
+ // With the token was issued.
+ IssuedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=issued_at,json=issuedAt,proto3" json:"issued_at,omitempty"`
+ // The capabilities referenced in the token.
+ Capabilities []*WhoAmI_Capability `protobuf:"bytes,101,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
+ // The upstream email for this token.
+ Email string `protobuf:"bytes,102,opt,name=email,proto3" json:"email,omitempty"`
+}
+
+func (x *WhoAmI) Reset() {
+ *x = WhoAmI{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WhoAmI) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WhoAmI) ProtoMessage() {}
+
+func (x *WhoAmI) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WhoAmI.ProtoReflect.Descriptor instead.
+func (*WhoAmI) Descriptor() ([]byte, []int) {
+ return file_auth_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *WhoAmI) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *WhoAmI) GetSubject() string {
+ if x != nil {
+ return x.Subject
+ }
+ return ""
+}
+
+func (x *WhoAmI) GetAudience() []string {
+ if x != nil {
+ return x.Audience
+ }
+ return nil
+}
+
+func (x *WhoAmI) GetExpiry() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiry
+ }
+ return nil
+}
+
+func (x *WhoAmI) GetIssuedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.IssuedAt
+ }
+ return nil
+}
+
+func (x *WhoAmI) GetCapabilities() []*WhoAmI_Capability {
+ if x != nil {
+ return x.Capabilities
+ }
+ return nil
+}
+
+func (x *WhoAmI) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+// --- Upstream fields ---
+type WhoAmI_Capability struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group of the bound role.
+ Group *v11.Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ // role of the bound identity.
+ Role *v11.Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *WhoAmI_Capability) Reset() {
+ *x = WhoAmI_Capability{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_auth_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WhoAmI_Capability) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WhoAmI_Capability) ProtoMessage() {}
+
+func (x *WhoAmI_Capability) ProtoReflect() protoreflect.Message {
+ mi := &file_auth_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WhoAmI_Capability.ProtoReflect.Descriptor instead.
+func (*WhoAmI_Capability) Descriptor() ([]byte, []int) {
+ return file_auth_platform_proto_rawDescGZIP(), []int{2, 0}
+}
+
+func (x *WhoAmI_Capability) GetGroup() *v11.Group {
+ if x != nil {
+ return x.Group
+ }
+ return nil
+}
+
+func (x *WhoAmI_Capability) GetRole() *v11.Role {
+ if x != nil {
+ return x.Role
+ }
+ return nil
+}
+
+var File_auth_platform_proto protoreflect.FileDescriptor
+
+var file_auth_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x1a,
+ 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65,
+ 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x23, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63,
+ 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12,
+ 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f,
+ 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a,
+ 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x22, 0xa1, 0x03, 0x0a, 0x06, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x12, 0x16, 0x0a, 0x06, 0x69,
+ 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73,
+ 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a,
+ 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x78, 0x70,
+ 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x37, 0x0a,
+ 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73,
+ 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x2e, 0x43,
+ 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
+ 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x75, 0x0a,
+ 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x32, 0xa4, 0x02, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x61, 0x0a,
+ 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
+ 0x79, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f,
+ 0x41, 0x6d, 0x49, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x75,
+ 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00,
+ 0x12, 0xb8, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22,
+ 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76,
+ 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x02, 0x0a, 0x00, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x30, 0x0a, 0x25, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x65, 0x0a, 0x23, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
+ 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e,
+ 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x75, 0x74, 0x68,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
+ 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_auth_platform_proto_rawDescOnce sync.Once
+ file_auth_platform_proto_rawDescData = file_auth_platform_proto_rawDesc
+)
+
+func file_auth_platform_proto_rawDescGZIP() []byte {
+ file_auth_platform_proto_rawDescOnce.Do(func() {
+ file_auth_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_platform_proto_rawDescData)
+ })
+ return file_auth_platform_proto_rawDescData
+}
+
+var file_auth_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_auth_platform_proto_goTypes = []interface{}{
+ (*RegistrationRequest)(nil), // 0: chainguard.platform.auth.RegistrationRequest
+ (*Session)(nil), // 1: chainguard.platform.auth.Session
+ (*WhoAmI)(nil), // 2: chainguard.platform.auth.WhoAmI
+ (*WhoAmI_Capability)(nil), // 3: chainguard.platform.auth.WhoAmI.Capability
+ (*v1.Cluster_EnforcerOptions)(nil), // 4: chainguard.platform.tenant.Cluster.EnforcerOptions
+ (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
+ (*v11.Group)(nil), // 6: chainguard.platform.iam.Group
+ (*v11.Role)(nil), // 7: chainguard.platform.iam.Role
+ (*emptypb.Empty)(nil), // 8: google.protobuf.Empty
+}
+var file_auth_platform_proto_depIdxs = []int32{
+ 4, // 0: chainguard.platform.auth.RegistrationRequest.enforcer_options:type_name -> chainguard.platform.tenant.Cluster.EnforcerOptions
+ 5, // 1: chainguard.platform.auth.WhoAmI.expiry:type_name -> google.protobuf.Timestamp
+ 5, // 2: chainguard.platform.auth.WhoAmI.issued_at:type_name -> google.protobuf.Timestamp
+ 3, // 3: chainguard.platform.auth.WhoAmI.capabilities:type_name -> chainguard.platform.auth.WhoAmI.Capability
+ 6, // 4: chainguard.platform.auth.WhoAmI.Capability.group:type_name -> chainguard.platform.iam.Group
+ 7, // 5: chainguard.platform.auth.WhoAmI.Capability.role:type_name -> chainguard.platform.iam.Role
+ 8, // 6: chainguard.platform.auth.Auth.Validate:input_type -> google.protobuf.Empty
+ 0, // 7: chainguard.platform.auth.Auth.Register:input_type -> chainguard.platform.auth.RegistrationRequest
+ 2, // 8: chainguard.platform.auth.Auth.Validate:output_type -> chainguard.platform.auth.WhoAmI
+ 1, // 9: chainguard.platform.auth.Auth.Register:output_type -> chainguard.platform.auth.Session
+ 8, // [8:10] is the sub-list for method output_type
+ 6, // [6:8] 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_auth_platform_proto_init() }
+func file_auth_platform_proto_init() {
+ if File_auth_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_auth_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RegistrationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_auth_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Session); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_auth_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WhoAmI); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_auth_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WhoAmI_Capability); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_auth_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 4,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_auth_platform_proto_goTypes,
+ DependencyIndexes: file_auth_platform_proto_depIdxs,
+ MessageInfos: file_auth_platform_proto_msgTypes,
+ }.Build()
+ File_auth_platform_proto = out.File
+ file_auth_platform_proto_rawDesc = nil
+ file_auth_platform_proto_goTypes = nil
+ file_auth_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/auth/v1/auth.platform.pb.gw.go b/proto/platform/auth/v1/auth.platform.pb.gw.go
new file mode 100644
index 00000000..0257f6a2
--- /dev/null
+++ b/proto/platform/auth/v1/auth.platform.pb.gw.go
@@ -0,0 +1,237 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: auth.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Auth_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ msg, err := client.Validate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Auth_Validate_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq emptypb.Empty
+ var metadata runtime.ServerMetadata
+
+ msg, err := server.Validate(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Auth_Register_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RegistrationRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Register(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Auth_Register_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RegistrationRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Register(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterAuthHandlerServer registers the http handlers for service Auth to "mux".
+// UnaryRPC :call AuthServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAuthHandlerFromEndpoint instead.
+func RegisterAuthHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AuthServer) error {
+
+ mux.Handle("GET", pattern_Auth_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Validate", runtime.WithHTTPPathPattern("/auth/v1/ok"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Auth_Validate_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Auth_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Auth_Register_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Register", runtime.WithHTTPPathPattern("/auth/v1/register"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Auth_Register_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Auth_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterAuthHandlerFromEndpoint is same as RegisterAuthHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterAuthHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterAuthHandler(ctx, mux, conn)
+}
+
+// RegisterAuthHandler registers the http handlers for service Auth to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterAuthHandlerClient(ctx, mux, NewAuthClient(conn))
+}
+
+// RegisterAuthHandlerClient registers the http handlers for service Auth
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AuthClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AuthClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "AuthClient" to call the correct interceptors.
+func RegisterAuthHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AuthClient) error {
+
+ mux.Handle("GET", pattern_Auth_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Validate", runtime.WithHTTPPathPattern("/auth/v1/ok"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Auth_Validate_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Auth_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Auth_Register_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.auth.Auth/Register", runtime.WithHTTPPathPattern("/auth/v1/register"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Auth_Register_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Auth_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Auth_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v1", "ok"}, ""))
+
+ pattern_Auth_Register_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v1", "register"}, ""))
+)
+
+var (
+ forward_Auth_Validate_0 = runtime.ForwardResponseMessage
+
+ forward_Auth_Register_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/auth/v1/auth.platform.proto b/proto/platform/auth/v1/auth.platform.proto
new file mode 100644
index 00000000..40b20e45
--- /dev/null
+++ b/proto/platform/auth/v1/auth.platform.proto
@@ -0,0 +1,111 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/auth/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.auth.v1";
+option java_outer_classname = "PlatformAuthProto";
+
+package chainguard.platform.auth;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/iam/v1/group.platform.proto";
+import "platform/iam/v1/role.platform.proto";
+import "platform/tenant/v1/cluster.platform.proto";
+import "google/protobuf/timestamp.proto";
+
+service Auth {
+ rpc Validate(google.protobuf.Empty) returns (WhoAmI) {
+ option (google.api.http) = {
+ get: "/auth/v1/ok"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ // This API requires no capabilities, it simply
+ // validates the token.
+ }
+ };
+ }
+
+ rpc Register(RegistrationRequest) returns (Session) {
+ option (google.api.http) = {
+ post: "/auth/v1/register"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ // This method accepts non-Chainguard tokens and
+ // uses them to register a new user so that the
+ // tokens can be sent through our STS.
+ disabled: {}
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.auth.registered.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message RegistrationRequest {
+ // code is an optional encoded invite code, which allows us to register
+ // the caller's identity as a member of a particular group as a particular
+ // role.
+ // +optional
+ string code = 1;
+
+ // cluster_id is an optional cluster id, which simultaneously registers
+ // a Cluster with the Identity. This path must specify an invite code, so
+ // we know where in the IAM hierarchy to link the cluster.
+ string cluster_id = 2;
+
+ // identity_id is an optional identity id. If the user already exists, this
+ // by-passes identity registration and continues on to cluster registration
+ // (if applicable)
+ string identity_id = 3;
+
+ // cluster_name is an optional name to give the cluster when one is
+ // registered as part of the registration flow.
+ string cluster_name = 4;
+
+ // cluster_description is an optional description to give the cluster
+ // when one is registered as part of the registration flow.
+ string cluster_description = 5;
+
+ // enforcer_options defines the enforcer options.
+ chainguard.platform.tenant.Cluster.EnforcerOptions enforcer_options = 6;
+}
+
+message Session {
+ // identity, the Chainguard identity id.
+ string identity = 1;
+ // group, the group this identity has joined by invitation, when an invite
+ // code was supplied.
+ string group = 2;
+}
+
+message WhoAmI {
+ // Issuer is the issuer of the token.
+ string issuer = 1;
+ // The subject of the token.
+ string subject = 2;
+ // Audience is who the token is intended for.
+ repeated string audience = 3;
+ // When the token expires.
+ google.protobuf.Timestamp expiry = 4;
+ // With the token was issued.
+ google.protobuf.Timestamp issued_at = 5;
+
+ // --- Upstream fields ---
+ message Capability {
+ // group of the bound role.
+ chainguard.platform.iam.Group group = 1;
+ // role of the bound identity.
+ chainguard.platform.iam.Role role = 2;
+ }
+ // The capabilities referenced in the token.
+ repeated Capability capabilities = 101;
+ // The upstream email for this token.
+ string email = 102;
+}
diff --git a/proto/platform/auth/v1/auth.platform_grpc.pb.go b/proto/platform/auth/v1/auth.platform_grpc.pb.go
new file mode 100644
index 00000000..17053a34
--- /dev/null
+++ b/proto/platform/auth/v1/auth.platform_grpc.pb.go
@@ -0,0 +1,147 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: auth.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Auth_Validate_FullMethodName = "/chainguard.platform.auth.Auth/Validate"
+ Auth_Register_FullMethodName = "/chainguard.platform.auth.Auth/Register"
+)
+
+// AuthClient is the client API for Auth service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type AuthClient interface {
+ Validate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*WhoAmI, error)
+ Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*Session, error)
+}
+
+type authClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewAuthClient(cc grpc.ClientConnInterface) AuthClient {
+ return &authClient{cc}
+}
+
+func (c *authClient) Validate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*WhoAmI, error) {
+ out := new(WhoAmI)
+ err := c.cc.Invoke(ctx, Auth_Validate_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *authClient) Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*Session, error) {
+ out := new(Session)
+ err := c.cc.Invoke(ctx, Auth_Register_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// AuthServer is the server API for Auth service.
+// All implementations must embed UnimplementedAuthServer
+// for forward compatibility
+type AuthServer interface {
+ Validate(context.Context, *emptypb.Empty) (*WhoAmI, error)
+ Register(context.Context, *RegistrationRequest) (*Session, error)
+ mustEmbedUnimplementedAuthServer()
+}
+
+// UnimplementedAuthServer must be embedded to have forward compatible implementations.
+type UnimplementedAuthServer struct {
+}
+
+func (UnimplementedAuthServer) Validate(context.Context, *emptypb.Empty) (*WhoAmI, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented")
+}
+func (UnimplementedAuthServer) Register(context.Context, *RegistrationRequest) (*Session, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Register not implemented")
+}
+func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {}
+
+// UnsafeAuthServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to AuthServer will
+// result in compilation errors.
+type UnsafeAuthServer interface {
+ mustEmbedUnimplementedAuthServer()
+}
+
+func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) {
+ s.RegisterService(&Auth_ServiceDesc, srv)
+}
+
+func _Auth_Validate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(AuthServer).Validate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Auth_Validate_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(AuthServer).Validate(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Auth_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RegistrationRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(AuthServer).Register(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Auth_Register_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(AuthServer).Register(ctx, req.(*RegistrationRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Auth_ServiceDesc is the grpc.ServiceDesc for Auth service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Auth_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.auth.Auth",
+ HandlerType: (*AuthServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Validate",
+ Handler: _Auth_Validate_Handler,
+ },
+ {
+ MethodName: "Register",
+ Handler: _Auth_Register_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "auth.platform.proto",
+}
diff --git a/proto/platform/auth/v1/doc.go b/proto/platform/auth/v1/doc.go
new file mode 100644
index 00000000..409f9974
--- /dev/null
+++ b/proto/platform/auth/v1/doc.go
@@ -0,0 +1,10 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing Auth interactions for the Console.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. auth.platform.proto
+package v1
diff --git a/proto/platform/auth/v1/test/mock_auth.go b/proto/platform/auth/v1/test/mock_auth.go
new file mode 100644
index 00000000..a62ebe20
--- /dev/null
+++ b/proto/platform/auth/v1/test/mock_auth.go
@@ -0,0 +1,75 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ auth "chainguard.dev/sdk/proto/platform/auth/v1"
+)
+
+var _ auth.AuthClient = (*MockAuthClient)(nil)
+
+type MockAuthClient struct {
+ OnValidate []AuthOnValidate
+ OnRegister []AuthOnRegister
+}
+
+type FromContextFn func(context.Context) bool
+
+type AuthOnValidate struct {
+ Given FromContextFn
+ Validate *auth.WhoAmI
+ Error error
+}
+
+type AuthOnRegister struct {
+ Given *auth.RegistrationRequest
+ Created *auth.Session
+ CheckContext FromContextFn
+ Error error
+}
+
+func (m MockAuthClient) Validate(ctx context.Context, _ *emptypb.Empty, _ ...grpc.CallOption) (*auth.WhoAmI, error) {
+ for _, o := range m.OnValidate {
+ if o.Given(ctx) {
+ return o.Validate, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for context: %v", ctx)
+}
+
+func (m MockAuthClient) Register(ctx context.Context, given *auth.RegistrationRequest, _ ...grpc.CallOption) (*auth.Session, error) {
+ for _, o := range m.OnRegister {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ if o.CheckContext == nil || o.CheckContext(ctx) {
+ return o.Created, o.Error
+ }
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+// --- Server ---
+
+type MockAuthServer struct {
+ auth.UnimplementedAuthServer
+ Client MockAuthClient
+}
+
+func (m MockAuthServer) Validate(ctx context.Context, empty *emptypb.Empty) (*auth.WhoAmI, error) {
+ return m.Client.Validate(ctx, empty)
+}
+
+func (m MockAuthServer) Register(ctx context.Context, req *auth.RegistrationRequest) (*auth.Session, error) {
+ return m.Client.Register(ctx, req)
+}
diff --git a/proto/platform/clients.go b/proto/platform/clients.go
new file mode 100644
index 00000000..8241bba2
--- /dev/null
+++ b/proto/platform/clients.go
@@ -0,0 +1,195 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package platform
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
+ platformauth "chainguard.dev/sdk/proto/platform/auth/v1"
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+ platformoidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+ ping "chainguard.dev/sdk/proto/platform/ping/v1"
+ registry "chainguard.dev/sdk/proto/platform/registry/v1"
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+)
+
+type userAgentString struct{}
+
+type Clients interface {
+ IAM() iam.Clients
+ Tenant() tenant.Clients
+ Registry() registry.Clients
+ Advisory() advisory.Clients
+ Ping() ping.Clients
+
+ Close() error
+}
+
+func NewPlatformClients(ctx context.Context, apiURL string, cred credentials.PerRPCCredentials, addlOpts ...grpc.DialOption) (Clients, error) {
+ apiURI, err := url.Parse(apiURL)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse iam service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*apiURI)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+ if ua := GetUserAgent(ctx); ua != "" {
+ opts = append(opts, grpc.WithUserAgent(ua))
+ }
+ opts = append(opts, addlOpts...)
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ iam: iam.NewClientsFromConnection(conn),
+ tenant: tenant.NewClientsFromConnection(conn),
+ registry: registry.NewClientsFromConnection(conn),
+ advisory: advisory.NewClientsFromConnection(conn),
+ ping: ping.NewClientsFromConnection(conn),
+ conn: conn,
+ }, nil
+}
+
+type clients struct {
+ iam iam.Clients
+ tenant tenant.Clients
+ registry registry.Clients
+ advisory advisory.Clients
+ ping ping.Clients
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) IAM() iam.Clients {
+ return c.iam
+}
+
+func (c *clients) Tenant() tenant.Clients {
+ return c.tenant
+}
+
+func (c *clients) Registry() registry.Clients {
+ return c.registry
+}
+
+func (c *clients) Advisory() advisory.Clients {
+ return c.advisory
+}
+
+func (c *clients) Ping() ping.Clients {
+ return c.ping
+}
+
+func (c *clients) Close() error {
+ return c.conn.Close()
+}
+
+type OIDCClients interface {
+ Auth() platformauth.AuthClient
+ OIDC() platformoidc.Clients
+ OIDCPing() ping.Clients
+
+ Close() error
+}
+
+func NewOIDCClients(ctx context.Context, issuerURL string, cred credentials.PerRPCCredentials) (OIDCClients, error) {
+ issuerURI, err := url.Parse(issuerURL)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse issuer URL: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*issuerURI)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+ if ua := GetUserAgent(ctx); ua != "" {
+ opts = append(opts, grpc.WithUserAgent(ua))
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the OIDC issuer: %w", err)
+ }
+
+ return &oidcClients{
+ auth: platformauth.NewAuthClient(conn),
+ oidc: platformoidc.NewClientsFromConnection(conn),
+ ping: ping.NewClientsFromConnection(conn),
+ conn: conn,
+ }, nil
+}
+
+type oidcClients struct {
+ auth platformauth.AuthClient
+ oidc platformoidc.Clients
+ ping ping.Clients
+
+ conn *grpc.ClientConn
+}
+
+func (c *oidcClients) Auth() platformauth.AuthClient {
+ return c.auth
+}
+
+func (c *oidcClients) OIDC() platformoidc.Clients {
+ return c.oidc
+}
+
+func (c *oidcClients) OIDCPing() ping.Clients {
+ return c.ping
+}
+
+func (c *oidcClients) Close() error {
+ return c.conn.Close()
+}
+
+// WithUserAgent adds a UserAgent string to the context
+// passed to the GRPC client
+func WithUserAgent(ctx context.Context, userAgent string) context.Context {
+ if userAgent == "" {
+ return ctx
+ }
+ return context.WithValue(ctx, userAgentString{}, userAgent)
+}
+
+// GetUserAgent extracts the user agent string from the context
+func GetUserAgent(ctx context.Context) string {
+ if ua := ctx.Value(userAgentString{}); ua != nil {
+ return ua.(string)
+ }
+ return ""
+}
diff --git a/proto/platform/common/v1/doc.go b/proto/platform/common/v1/doc.go
new file mode 100644
index 00000000..96d90e89
--- /dev/null
+++ b/proto/platform/common/v1/doc.go
@@ -0,0 +1,9 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. uidp.platform.proto
+
+// Package common contains Chainguard shared types exposed to the console.
+package v1
diff --git a/proto/platform/common/v1/uidp.platform.pb.go b/proto/platform/common/v1/uidp.platform.pb.go
new file mode 100644
index 00000000..626ce861
--- /dev/null
+++ b/proto/platform/common/v1/uidp.platform.pb.go
@@ -0,0 +1,184 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: uidp.platform.proto
+
+package v1
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type UIDPFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ancestors_of are groups reachable by repeated proceeding from child to parent.
+ AncestorsOf string `protobuf:"bytes,1,opt,name=ancestors_of,json=ancestorsOf,proto3" json:"ancestors_of,omitempty"`
+ // descendants_of are groups reachable by repeated proceeding from parent to child.
+ DescendantsOf string `protobuf:"bytes,2,opt,name=descendants_of,json=descendantsOf,proto3" json:"descendants_of,omitempty"`
+ // children_of are groups reachable by directly proceeding from parent to children.
+ ChildrenOf string `protobuf:"bytes,3,opt,name=children_of,json=childrenOf,proto3" json:"children_of,omitempty"`
+ // in_root resticts responses to root level resources (organizations, user identities)
+ InRoot bool `protobuf:"varint,4,opt,name=in_root,json=inRoot,proto3" json:"in_root,omitempty"`
+}
+
+func (x *UIDPFilter) Reset() {
+ *x = UIDPFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_uidp_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UIDPFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UIDPFilter) ProtoMessage() {}
+
+func (x *UIDPFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_uidp_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UIDPFilter.ProtoReflect.Descriptor instead.
+func (*UIDPFilter) Descriptor() ([]byte, []int) {
+ return file_uidp_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *UIDPFilter) GetAncestorsOf() string {
+ if x != nil {
+ return x.AncestorsOf
+ }
+ return ""
+}
+
+func (x *UIDPFilter) GetDescendantsOf() string {
+ if x != nil {
+ return x.DescendantsOf
+ }
+ return ""
+}
+
+func (x *UIDPFilter) GetChildrenOf() string {
+ if x != nil {
+ return x.ChildrenOf
+ }
+ return ""
+}
+
+func (x *UIDPFilter) GetInRoot() bool {
+ if x != nil {
+ return x.InRoot
+ }
+ return false
+}
+
+var File_uidp_platform_proto protoreflect.FileDescriptor
+
+var file_uidp_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x66,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72,
+ 0x73, 0x4f, 0x66, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e,
+ 0x74, 0x73, 0x5f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73,
+ 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68,
+ 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x5f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x4f, 0x66, 0x12, 0x17, 0x0a, 0x07, 0x69,
+ 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e,
+ 0x52, 0x6f, 0x6f, 0x74, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x49, 0x44,
+ 0x50, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_uidp_platform_proto_rawDescOnce sync.Once
+ file_uidp_platform_proto_rawDescData = file_uidp_platform_proto_rawDesc
+)
+
+func file_uidp_platform_proto_rawDescGZIP() []byte {
+ file_uidp_platform_proto_rawDescOnce.Do(func() {
+ file_uidp_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_uidp_platform_proto_rawDescData)
+ })
+ return file_uidp_platform_proto_rawDescData
+}
+
+var file_uidp_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_uidp_platform_proto_goTypes = []interface{}{
+ (*UIDPFilter)(nil), // 0: chainguard.platform.common.UIDPFilter
+}
+var file_uidp_platform_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_uidp_platform_proto_init() }
+func file_uidp_platform_proto_init() {
+ if File_uidp_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_uidp_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UIDPFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_uidp_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_uidp_platform_proto_goTypes,
+ DependencyIndexes: file_uidp_platform_proto_depIdxs,
+ MessageInfos: file_uidp_platform_proto_msgTypes,
+ }.Build()
+ File_uidp_platform_proto = out.File
+ file_uidp_platform_proto_rawDesc = nil
+ file_uidp_platform_proto_goTypes = nil
+ file_uidp_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/common/v1/uidp.platform.proto b/proto/platform/common/v1/uidp.platform.proto
new file mode 100644
index 00000000..54f4539c
--- /dev/null
+++ b/proto/platform/common/v1/uidp.platform.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/common/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.common.v1";
+option java_outer_classname = "PlatformCommonUIDPProto";
+
+package chainguard.platform.common;
+
+message UIDPFilter {
+ // ancestors_of are groups reachable by repeated proceeding from child to parent.
+ string ancestors_of = 1;
+ // descendants_of are groups reachable by repeated proceeding from parent to child.
+ string descendants_of = 2;
+ // children_of are groups reachable by directly proceeding from parent to children.
+ string children_of = 3;
+ // in_root resticts responses to root level resources (organizations, user identities)
+ bool in_root = 4;
+}
diff --git a/proto/platform/events/v1/doc.go b/proto/platform/events/v1/doc.go
new file mode 100644
index 00000000..8e031d9d
--- /dev/null
+++ b/proto/platform/events/v1/doc.go
@@ -0,0 +1,12 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Generate the proto definitions
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. subscriptions.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identities.platform.proto
+
+// Package events contains the GRPC client and server definitions
+// for implementing eventing interactions for the Console.
+package v1
diff --git a/proto/platform/events/v1/identities.platform.event.go b/proto/platform/events/v1/identities.platform.event.go
new file mode 100644
index 00000000..3b45f452
--- /dev/null
+++ b/proto/platform/events/v1/identities.platform.event.go
@@ -0,0 +1,16 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *IdentityMetadata) CloudEventsExtension(key string) (string, bool) { //nolint: revive
+ return "", false
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *IdentityMetadata) CloudEventsSubject() string {
+ return ""
+}
diff --git a/proto/platform/events/v1/identities.platform.pb.go b/proto/platform/events/v1/identities.platform.pb.go
new file mode 100644
index 00000000..3a5a7e04
--- /dev/null
+++ b/proto/platform/events/v1/identities.platform.pb.go
@@ -0,0 +1,416 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: identities.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Identity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is unique identifier of this specific identity.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // subject of OIDC ID tokens issued for this identity. Matchs the `sub`
+ // claim.
+ Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
+ // issuer of the OIDC ID tokens issued for this identity. Matches the `iss`
+ // claim.
+ Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ // Optional JWKS formatted public keys for the issuer. If supplied
+ // verification of ID tokens is attempted using these keys instead of the
+ // normal OIDC discovery path. This enables e.g clusters behing NAT to
+ // authenticate.
+ IssuerKeys string `protobuf:"bytes,4,opt,name=issuer_keys,json=issuerKeys,proto3" json:"issuer_keys,omitempty"`
+ // Expiration of identity / issuer keys. After this date /time the issuer
+ // keys will not be trusted. Defaults / maximum of 30 days after creation
+ // time.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"`
+}
+
+func (x *Identity) Reset() {
+ *x = Identity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identities_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity) ProtoMessage() {}
+
+func (x *Identity) ProtoReflect() protoreflect.Message {
+ mi := &file_identities_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
+func (*Identity) Descriptor() ([]byte, []int) {
+ return file_identities_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Identity) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Identity) GetSubject() string {
+ if x != nil {
+ return x.Subject
+ }
+ return ""
+}
+
+func (x *Identity) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *Identity) GetIssuerKeys() string {
+ if x != nil {
+ return x.IssuerKeys
+ }
+ return ""
+}
+
+func (x *Identity) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+type IdentityMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ OnboardingQuestions *IdentityMetadata_OnboardingQuestions `protobuf:"bytes,1,opt,name=onboarding_questions,json=onboardingQuestions,proto3" json:"onboarding_questions,omitempty"`
+ // Output only. This is the name of the user.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // Whether the user has opted to receive updates from Chainguard.
+ UpdatesOptIn bool `protobuf:"varint,3,opt,name=updatesOptIn,proto3" json:"updatesOptIn,omitempty"`
+}
+
+func (x *IdentityMetadata) Reset() {
+ *x = IdentityMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identities_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityMetadata) ProtoMessage() {}
+
+func (x *IdentityMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_identities_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityMetadata.ProtoReflect.Descriptor instead.
+func (*IdentityMetadata) Descriptor() ([]byte, []int) {
+ return file_identities_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *IdentityMetadata) GetOnboardingQuestions() *IdentityMetadata_OnboardingQuestions {
+ if x != nil {
+ return x.OnboardingQuestions
+ }
+ return nil
+}
+
+func (x *IdentityMetadata) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *IdentityMetadata) GetUpdatesOptIn() bool {
+ if x != nil {
+ return x.UpdatesOptIn
+ }
+ return false
+}
+
+type IdentityMetadata_OnboardingQuestions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CompanyName string `protobuf:"bytes,1,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"`
+ Providers []string `protobuf:"bytes,2,rep,name=providers,proto3" json:"providers,omitempty"`
+ Product string `protobuf:"bytes,3,opt,name=product,proto3" json:"product,omitempty"`
+}
+
+func (x *IdentityMetadata_OnboardingQuestions) Reset() {
+ *x = IdentityMetadata_OnboardingQuestions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identities_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityMetadata_OnboardingQuestions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityMetadata_OnboardingQuestions) ProtoMessage() {}
+
+func (x *IdentityMetadata_OnboardingQuestions) ProtoReflect() protoreflect.Message {
+ mi := &file_identities_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityMetadata_OnboardingQuestions.ProtoReflect.Descriptor instead.
+func (*IdentityMetadata_OnboardingQuestions) Descriptor() ([]byte, []int) {
+ return file_identities_platform_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *IdentityMetadata_OnboardingQuestions) GetCompanyName() string {
+ if x != nil {
+ return x.CompanyName
+ }
+ return ""
+}
+
+func (x *IdentityMetadata_OnboardingQuestions) GetProviders() []string {
+ if x != nil {
+ return x.Providers
+ }
+ return nil
+}
+
+func (x *IdentityMetadata_OnboardingQuestions) GetProduct() string {
+ if x != nil {
+ return x.Product
+ }
+ return ""
+}
+
+var File_identities_platform_proto protoreflect.FileDescriptor
+
+var file_identities_platform_proto_rawDesc = []byte{
+ 0x0a, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12,
+ 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65,
+ 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73,
+ 0x73, 0x75, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x02, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x73, 0x0a, 0x14, 0x6f, 0x6e, 0x62,
+ 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67,
+ 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61,
+ 0x72, 0x64, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x4f, 0x70, 0x74,
+ 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x73, 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x1a, 0x70, 0x0a, 0x13, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72,
+ 0x64, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a,
+ 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18,
+ 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x32, 0xec, 0x02, 0x0a, 0x0a, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2b,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x85, 0x07, 0x10, 0x01, 0x12, 0xd9, 0x01, 0x0a, 0x0e,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x2c, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x20, 0x32, 0x1b, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a,
+ 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
+ 0x0b, 0x35, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x75, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31,
+ 0x42, 0x1d, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
+ 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
+ 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_identities_platform_proto_rawDescOnce sync.Once
+ file_identities_platform_proto_rawDescData = file_identities_platform_proto_rawDesc
+)
+
+func file_identities_platform_proto_rawDescGZIP() []byte {
+ file_identities_platform_proto_rawDescOnce.Do(func() {
+ file_identities_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identities_platform_proto_rawDescData)
+ })
+ return file_identities_platform_proto_rawDescData
+}
+
+var file_identities_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_identities_platform_proto_goTypes = []interface{}{
+ (*Identity)(nil), // 0: chainguard.platform.events.Identity
+ (*IdentityMetadata)(nil), // 1: chainguard.platform.events.IdentityMetadata
+ (*IdentityMetadata_OnboardingQuestions)(nil), // 2: chainguard.platform.events.IdentityMetadata.OnboardingQuestions
+ (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
+}
+var file_identities_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.events.Identity.expiration:type_name -> google.protobuf.Timestamp
+ 2, // 1: chainguard.platform.events.IdentityMetadata.onboarding_questions:type_name -> chainguard.platform.events.IdentityMetadata.OnboardingQuestions
+ 0, // 2: chainguard.platform.events.Identities.Create:input_type -> chainguard.platform.events.Identity
+ 1, // 3: chainguard.platform.events.Identities.UpdateMetadata:input_type -> chainguard.platform.events.IdentityMetadata
+ 0, // 4: chainguard.platform.events.Identities.Create:output_type -> chainguard.platform.events.Identity
+ 1, // 5: chainguard.platform.events.Identities.UpdateMetadata:output_type -> chainguard.platform.events.IdentityMetadata
+ 4, // [4:6] is the sub-list for method output_type
+ 2, // [2:4] 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_identities_platform_proto_init() }
+func file_identities_platform_proto_init() {
+ if File_identities_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_identities_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identities_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityMetadata); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identities_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityMetadata_OnboardingQuestions); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_identities_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_identities_platform_proto_goTypes,
+ DependencyIndexes: file_identities_platform_proto_depIdxs,
+ MessageInfos: file_identities_platform_proto_msgTypes,
+ }.Build()
+ File_identities_platform_proto = out.File
+ file_identities_platform_proto_rawDesc = nil
+ file_identities_platform_proto_goTypes = nil
+ file_identities_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/events/v1/identities.platform.pb.gw.go b/proto/platform/events/v1/identities.platform.pb.gw.go
new file mode 100644
index 00000000..e20b6a68
--- /dev/null
+++ b/proto/platform/events/v1/identities.platform.pb.gw.go
@@ -0,0 +1,252 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: identities.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Identity
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Identity
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Identities_UpdateMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityMetadata
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.UpdateMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_UpdateMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityMetadata
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.UpdateMetadata(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterIdentitiesHandlerServer registers the http handlers for service Identities to "mux".
+// UnaryRPC :call IdentitiesServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentitiesHandlerFromEndpoint instead.
+func RegisterIdentitiesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentitiesServer) error {
+
+ mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PATCH", pattern_Identities_UpdateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Identities/UpdateMetadata", runtime.WithHTTPPathPattern("/iam/v1/identities/metadata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_UpdateMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_UpdateMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterIdentitiesHandlerFromEndpoint is same as RegisterIdentitiesHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterIdentitiesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterIdentitiesHandler(ctx, mux, conn)
+}
+
+// RegisterIdentitiesHandler registers the http handlers for service Identities to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterIdentitiesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterIdentitiesHandlerClient(ctx, mux, NewIdentitiesClient(conn))
+}
+
+// RegisterIdentitiesHandlerClient registers the http handlers for service Identities
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentitiesClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentitiesClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "IdentitiesClient" to call the correct interceptors.
+func RegisterIdentitiesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentitiesClient) error {
+
+ mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PATCH", pattern_Identities_UpdateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Identities/UpdateMetadata", runtime.WithHTTPPathPattern("/iam/v1/identities/metadata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_UpdateMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_UpdateMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Identities_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identities"}, ""))
+
+ pattern_Identities_UpdateMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"iam", "v1", "identities", "metadata"}, ""))
+)
+
+var (
+ forward_Identities_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Identities_UpdateMetadata_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/events/v1/identities.platform.proto b/proto/platform/events/v1/identities.platform.proto
new file mode 100644
index 00000000..de4f96be
--- /dev/null
+++ b/proto/platform/events/v1/identities.platform.proto
@@ -0,0 +1,97 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/events/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.events.v1";
+option java_outer_classname = "PlatformEventsIdentitiesProto";
+
+package chainguard.platform.events;
+
+import "google/protobuf/timestamp.proto";
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+
+service Identities {
+ rpc Create(Identity) returns (Identity) {
+ option (google.api.http) = {
+ post: "/iam/v1/identities"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ // TODO(nsmith): The authentications story here is pretty rough. This
+ // identity creation must be an unscoped permission because they aren't
+ // nested under IAM groups.... we need a better scoping story here. Is
+ // there any reason we can't nest these under a group?
+ capabilities: [CAP_IAM_IDENTITY_CREATE]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc UpdateMetadata(IdentityMetadata) returns (IdentityMetadata) {
+ option (google.api.http) = {
+ patch: "/iam/v1/identities/metadata"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ // Authentication will be implicit in the handler - the updated identity
+ // is the one from the token.
+ enabled: {
+ capabilities: []
+ unscoped: true
+ }
+ };
+ option (chainguard.annotations.events) = {
+ // Emit an internal event to track user onboarding.
+ type: "dev.chainguard.api.iam.identity.metadata.updated.v1"
+ audience: INTERNAL
+ };
+ }
+
+ // NB: List, Update and Delete unimplemented here as its unclear how
+ // permissions would work. Like how do we scope list to the identities a user
+ // _should_ have access to instead of the global set of all identities
+ // (insert yikes energy).
+}
+
+message Identity {
+ // id is unique identifier of this specific identity.
+ string id = 1;
+
+ // subject of OIDC ID tokens issued for this identity. Matchs the `sub`
+ // claim.
+ string subject = 2;
+
+ // issuer of the OIDC ID tokens issued for this identity. Matches the `iss`
+ // claim.
+ string issuer = 3;
+
+ // Optional JWKS formatted public keys for the issuer. If supplied
+ // verification of ID tokens is attempted using these keys instead of the
+ // normal OIDC discovery path. This enables e.g clusters behing NAT to
+ // authenticate.
+ string issuer_keys = 4;
+
+ // Expiration of identity / issuer keys. After this date /time the issuer
+ // keys will not be trusted. Defaults / maximum of 30 days after creation
+ // time.
+ google.protobuf.Timestamp expiration = 5;
+}
+
+message IdentityMetadata {
+ OnboardingQuestions onboarding_questions = 1;
+
+ // Output only. This is the name of the user.
+ string name = 2;
+
+ // Whether the user has opted to receive updates from Chainguard.
+ bool updatesOptIn = 3;
+
+ message OnboardingQuestions {
+ string company_name = 1;
+ repeated string providers = 2;
+ string product = 3;
+ }
+}
diff --git a/proto/platform/events/v1/identities.platform_grpc.pb.go b/proto/platform/events/v1/identities.platform_grpc.pb.go
new file mode 100644
index 00000000..4ca37918
--- /dev/null
+++ b/proto/platform/events/v1/identities.platform_grpc.pb.go
@@ -0,0 +1,146 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: identities.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Identities_Create_FullMethodName = "/chainguard.platform.events.Identities/Create"
+ Identities_UpdateMetadata_FullMethodName = "/chainguard.platform.events.Identities/UpdateMetadata"
+)
+
+// IdentitiesClient is the client API for Identities service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type IdentitiesClient interface {
+ Create(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error)
+ UpdateMetadata(ctx context.Context, in *IdentityMetadata, opts ...grpc.CallOption) (*IdentityMetadata, error)
+}
+
+type identitiesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewIdentitiesClient(cc grpc.ClientConnInterface) IdentitiesClient {
+ return &identitiesClient{cc}
+}
+
+func (c *identitiesClient) Create(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error) {
+ out := new(Identity)
+ err := c.cc.Invoke(ctx, Identities_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identitiesClient) UpdateMetadata(ctx context.Context, in *IdentityMetadata, opts ...grpc.CallOption) (*IdentityMetadata, error) {
+ out := new(IdentityMetadata)
+ err := c.cc.Invoke(ctx, Identities_UpdateMetadata_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// IdentitiesServer is the server API for Identities service.
+// All implementations must embed UnimplementedIdentitiesServer
+// for forward compatibility
+type IdentitiesServer interface {
+ Create(context.Context, *Identity) (*Identity, error)
+ UpdateMetadata(context.Context, *IdentityMetadata) (*IdentityMetadata, error)
+ mustEmbedUnimplementedIdentitiesServer()
+}
+
+// UnimplementedIdentitiesServer must be embedded to have forward compatible implementations.
+type UnimplementedIdentitiesServer struct {
+}
+
+func (UnimplementedIdentitiesServer) Create(context.Context, *Identity) (*Identity, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedIdentitiesServer) UpdateMetadata(context.Context, *IdentityMetadata) (*IdentityMetadata, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method UpdateMetadata not implemented")
+}
+func (UnimplementedIdentitiesServer) mustEmbedUnimplementedIdentitiesServer() {}
+
+// UnsafeIdentitiesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to IdentitiesServer will
+// result in compilation errors.
+type UnsafeIdentitiesServer interface {
+ mustEmbedUnimplementedIdentitiesServer()
+}
+
+func RegisterIdentitiesServer(s grpc.ServiceRegistrar, srv IdentitiesServer) {
+ s.RegisterService(&Identities_ServiceDesc, srv)
+}
+
+func _Identities_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Identity)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).Create(ctx, req.(*Identity))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identities_UpdateMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(IdentityMetadata)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).UpdateMetadata(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_UpdateMetadata_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).UpdateMetadata(ctx, req.(*IdentityMetadata))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Identities_ServiceDesc is the grpc.ServiceDesc for Identities service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Identities_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.events.Identities",
+ HandlerType: (*IdentitiesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Identities_Create_Handler,
+ },
+ {
+ MethodName: "UpdateMetadata",
+ Handler: _Identities_UpdateMetadata_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "identities.platform.proto",
+}
diff --git a/proto/platform/events/v1/subscriptions.platform.event.go b/proto/platform/events/v1/subscriptions.platform.event.go
new file mode 100644
index 00000000..a2eda990
--- /dev/null
+++ b/proto/platform/events/v1/subscriptions.platform.event.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Subscription) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Subscription) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteSubscriptionRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteSubscriptionRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
+func (x *DeleteSubscriptionRequest) CloudEventsRedact() interface{} {
+ return nil
+}
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.go b/proto/platform/events/v1/subscriptions.platform.pb.go
new file mode 100644
index 00000000..98103c93
--- /dev/null
+++ b/proto/platform/events/v1/subscriptions.platform.pb.go
@@ -0,0 +1,510 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: subscriptions.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type CreateSubscriptionRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group UIDP path under which the new subscription is associated.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Subscription is the subscription to create;
+ Subscription *Subscription `protobuf:"bytes,2,opt,name=subscription,proto3" json:"subscription,omitempty"`
+}
+
+func (x *CreateSubscriptionRequest) Reset() {
+ *x = CreateSubscriptionRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_subscriptions_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSubscriptionRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSubscriptionRequest) ProtoMessage() {}
+
+func (x *CreateSubscriptionRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_subscriptions_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSubscriptionRequest.ProtoReflect.Descriptor instead.
+func (*CreateSubscriptionRequest) Descriptor() ([]byte, []int) {
+ return file_subscriptions_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CreateSubscriptionRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateSubscriptionRequest) GetSubscription() *Subscription {
+ if x != nil {
+ return x.Subscription
+ }
+ return nil
+}
+
+type Subscription struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is identifier of this specific subscription.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // sink is the address to which events shall be delivered using the selected protocol.
+ Sink string `protobuf:"bytes,2,opt,name=sink,proto3" json:"sink,omitempty"`
+}
+
+func (x *Subscription) Reset() {
+ *x = Subscription{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_subscriptions_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Subscription) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Subscription) ProtoMessage() {}
+
+func (x *Subscription) ProtoReflect() protoreflect.Message {
+ mi := &file_subscriptions_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Subscription.ProtoReflect.Descriptor instead.
+func (*Subscription) Descriptor() ([]byte, []int) {
+ return file_subscriptions_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Subscription) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Subscription) GetSink() string {
+ if x != nil {
+ return x.Sink
+ }
+ return ""
+}
+
+type SubscriptionList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Subscription `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *SubscriptionList) Reset() {
+ *x = SubscriptionList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_subscriptions_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SubscriptionList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscriptionList) ProtoMessage() {}
+
+func (x *SubscriptionList) ProtoReflect() protoreflect.Message {
+ mi := &file_subscriptions_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubscriptionList.ProtoReflect.Descriptor instead.
+func (*SubscriptionList) Descriptor() ([]byte, []int) {
+ return file_subscriptions_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SubscriptionList) GetItems() []*Subscription {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type SubscriptionFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filers records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *SubscriptionFilter) Reset() {
+ *x = SubscriptionFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_subscriptions_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SubscriptionFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscriptionFilter) ProtoMessage() {}
+
+func (x *SubscriptionFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_subscriptions_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubscriptionFilter.ProtoReflect.Descriptor instead.
+func (*SubscriptionFilter) Descriptor() ([]byte, []int) {
+ return file_subscriptions_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *SubscriptionFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *SubscriptionFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+type DeleteSubscriptionRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteSubscriptionRequest) Reset() {
+ *x = DeleteSubscriptionRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_subscriptions_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSubscriptionRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSubscriptionRequest) ProtoMessage() {}
+
+func (x *DeleteSubscriptionRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_subscriptions_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSubscriptionRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) {
+ return file_subscriptions_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteSubscriptionRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+var File_subscriptions_platform_proto protoreflect.FileDescriptor
+
+var file_subscriptions_platform_proto_rawDesc = []byte{
+ 0x0a, 0x1c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
+ 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+ 0x8e, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a,
+ 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x6e, 0x6b,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x6e, 0x6b, 0x22, 0x52, 0x0a, 0x10,
+ 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x60, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x22, 0x33, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xf2, 0x04, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf7, 0x01, 0x0a, 0x06, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x22, 0x27,
+ 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xdd,
+ 0x0b, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3c, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73,
+ 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xdf, 0x0b, 0x10, 0x01, 0x12, 0xcf, 0x01, 0x0a, 0x06, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
+ 0x6d, 0x70, 0x74, 0x79, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xe0, 0x0b, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3c,
+ 0x0a, 0x31, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x73, 0x75, 0x62, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x77, 0x0a, 0x25,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
+ 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x1f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_subscriptions_platform_proto_rawDescOnce sync.Once
+ file_subscriptions_platform_proto_rawDescData = file_subscriptions_platform_proto_rawDesc
+)
+
+func file_subscriptions_platform_proto_rawDescGZIP() []byte {
+ file_subscriptions_platform_proto_rawDescOnce.Do(func() {
+ file_subscriptions_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_subscriptions_platform_proto_rawDescData)
+ })
+ return file_subscriptions_platform_proto_rawDescData
+}
+
+var file_subscriptions_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_subscriptions_platform_proto_goTypes = []interface{}{
+ (*CreateSubscriptionRequest)(nil), // 0: chainguard.platform.events.CreateSubscriptionRequest
+ (*Subscription)(nil), // 1: chainguard.platform.events.Subscription
+ (*SubscriptionList)(nil), // 2: chainguard.platform.events.SubscriptionList
+ (*SubscriptionFilter)(nil), // 3: chainguard.platform.events.SubscriptionFilter
+ (*DeleteSubscriptionRequest)(nil), // 4: chainguard.platform.events.DeleteSubscriptionRequest
+ (*v1.UIDPFilter)(nil), // 5: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 6: google.protobuf.Empty
+}
+var file_subscriptions_platform_proto_depIdxs = []int32{
+ 1, // 0: chainguard.platform.events.CreateSubscriptionRequest.subscription:type_name -> chainguard.platform.events.Subscription
+ 1, // 1: chainguard.platform.events.SubscriptionList.items:type_name -> chainguard.platform.events.Subscription
+ 5, // 2: chainguard.platform.events.SubscriptionFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 3: chainguard.platform.events.Subscriptions.Create:input_type -> chainguard.platform.events.CreateSubscriptionRequest
+ 3, // 4: chainguard.platform.events.Subscriptions.List:input_type -> chainguard.platform.events.SubscriptionFilter
+ 4, // 5: chainguard.platform.events.Subscriptions.Delete:input_type -> chainguard.platform.events.DeleteSubscriptionRequest
+ 1, // 6: chainguard.platform.events.Subscriptions.Create:output_type -> chainguard.platform.events.Subscription
+ 2, // 7: chainguard.platform.events.Subscriptions.List:output_type -> chainguard.platform.events.SubscriptionList
+ 6, // 8: chainguard.platform.events.Subscriptions.Delete:output_type -> google.protobuf.Empty
+ 6, // [6:9] is the sub-list for method output_type
+ 3, // [3:6] 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_subscriptions_platform_proto_init() }
+func file_subscriptions_platform_proto_init() {
+ if File_subscriptions_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_subscriptions_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSubscriptionRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_subscriptions_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Subscription); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_subscriptions_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SubscriptionList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_subscriptions_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SubscriptionFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_subscriptions_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSubscriptionRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_subscriptions_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 5,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_subscriptions_platform_proto_goTypes,
+ DependencyIndexes: file_subscriptions_platform_proto_depIdxs,
+ MessageInfos: file_subscriptions_platform_proto_msgTypes,
+ }.Build()
+ File_subscriptions_platform_proto = out.File
+ file_subscriptions_platform_proto_rawDesc = nil
+ file_subscriptions_platform_proto_goTypes = nil
+ file_subscriptions_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.gw.go b/proto/platform/events/v1/subscriptions.platform.pb.gw.go
new file mode 100644
index 00000000..6fa11eee
--- /dev/null
+++ b/proto/platform/events/v1/subscriptions.platform.pb.gw.go
@@ -0,0 +1,389 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: subscriptions.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Subscriptions_Create_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSubscriptionRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Subscription); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Subscriptions_Create_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSubscriptionRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Subscription); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Subscriptions_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Subscriptions_List_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SubscriptionFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Subscriptions_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Subscriptions_List_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SubscriptionFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Subscriptions_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Subscriptions_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client SubscriptionsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteSubscriptionRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Subscriptions_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server SubscriptionsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteSubscriptionRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterSubscriptionsHandlerServer registers the http handlers for service Subscriptions to "mux".
+// UnaryRPC :call SubscriptionsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSubscriptionsHandlerFromEndpoint instead.
+func RegisterSubscriptionsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SubscriptionsServer) error {
+
+ mux.Handle("POST", pattern_Subscriptions_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Create", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Subscriptions_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Subscriptions_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/List", runtime.WithHTTPPathPattern("/events/v1/subscriptions"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Subscriptions_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Subscriptions_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Delete", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Subscriptions_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterSubscriptionsHandlerFromEndpoint is same as RegisterSubscriptionsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterSubscriptionsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterSubscriptionsHandler(ctx, mux, conn)
+}
+
+// RegisterSubscriptionsHandler registers the http handlers for service Subscriptions to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterSubscriptionsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterSubscriptionsHandlerClient(ctx, mux, NewSubscriptionsClient(conn))
+}
+
+// RegisterSubscriptionsHandlerClient registers the http handlers for service Subscriptions
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SubscriptionsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SubscriptionsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "SubscriptionsClient" to call the correct interceptors.
+func RegisterSubscriptionsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SubscriptionsClient) error {
+
+ mux.Handle("POST", pattern_Subscriptions_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Create", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Subscriptions_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Subscriptions_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/List", runtime.WithHTTPPathPattern("/events/v1/subscriptions"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Subscriptions_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Subscriptions_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.events.Subscriptions/Delete", runtime.WithHTTPPathPattern("/events/v1/subscriptions/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Subscriptions_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Subscriptions_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Subscriptions_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"events", "v1", "subscriptions", "parent_id"}, ""))
+
+ pattern_Subscriptions_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"events", "v1", "subscriptions"}, ""))
+
+ pattern_Subscriptions_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"events", "v1", "subscriptions", "id"}, ""))
+)
+
+var (
+ forward_Subscriptions_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Subscriptions_List_0 = runtime.ForwardResponseMessage
+
+ forward_Subscriptions_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/events/v1/subscriptions.platform.proto b/proto/platform/events/v1/subscriptions.platform.proto
new file mode 100644
index 00000000..c105890b
--- /dev/null
+++ b/proto/platform/events/v1/subscriptions.platform.proto
@@ -0,0 +1,92 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/events/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.events.v1";
+option java_outer_classname = "PlatformEventsSubscriptionProto";
+
+package chainguard.platform.events;
+
+import "google/protobuf/empty.proto";
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Subscriptions {
+ rpc Create(CreateSubscriptionRequest) returns (Subscription) {
+ option (google.api.http) = {
+ post: "/events/v1/subscriptions/{parent_id=**}"
+ body: "subscription"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_EVENTS_SUBSCRIPTION_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.events.subscription.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(SubscriptionFilter) returns (SubscriptionList) {
+ option (google.api.http) = {
+ get: "/events/v1/subscriptions"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_EVENTS_SUBSCRIPTION_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteSubscriptionRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/events/v1/subscriptions/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_EVENTS_SUBSCRIPTION_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.events.subscription.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message CreateSubscriptionRequest {
+ // parent_id, The Group UIDP path under which the new subscription is associated.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // Subscription is the subscription to create;
+ Subscription subscription = 2;
+}
+
+message Subscription {
+ // id is identifier of this specific subscription.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+ // sink is the address to which events shall be delivered using the selected protocol.
+ string sink = 2;
+}
+
+message SubscriptionList {
+ repeated Subscription items = 1;
+}
+
+message SubscriptionFilter {
+ // id is the exact UIDP of the record.
+ string id = 1;
+
+ // uidp filers records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 2;
+}
+
+message DeleteSubscriptionRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
diff --git a/proto/platform/events/v1/subscriptions.platform_grpc.pb.go b/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
new file mode 100644
index 00000000..54ba9058
--- /dev/null
+++ b/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
@@ -0,0 +1,184 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: subscriptions.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Subscriptions_Create_FullMethodName = "/chainguard.platform.events.Subscriptions/Create"
+ Subscriptions_List_FullMethodName = "/chainguard.platform.events.Subscriptions/List"
+ Subscriptions_Delete_FullMethodName = "/chainguard.platform.events.Subscriptions/Delete"
+)
+
+// SubscriptionsClient is the client API for Subscriptions service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SubscriptionsClient interface {
+ Create(ctx context.Context, in *CreateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error)
+ List(ctx context.Context, in *SubscriptionFilter, opts ...grpc.CallOption) (*SubscriptionList, error)
+ Delete(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type subscriptionsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSubscriptionsClient(cc grpc.ClientConnInterface) SubscriptionsClient {
+ return &subscriptionsClient{cc}
+}
+
+func (c *subscriptionsClient) Create(ctx context.Context, in *CreateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) {
+ out := new(Subscription)
+ err := c.cc.Invoke(ctx, Subscriptions_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *subscriptionsClient) List(ctx context.Context, in *SubscriptionFilter, opts ...grpc.CallOption) (*SubscriptionList, error) {
+ out := new(SubscriptionList)
+ err := c.cc.Invoke(ctx, Subscriptions_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *subscriptionsClient) Delete(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Subscriptions_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SubscriptionsServer is the server API for Subscriptions service.
+// All implementations must embed UnimplementedSubscriptionsServer
+// for forward compatibility
+type SubscriptionsServer interface {
+ Create(context.Context, *CreateSubscriptionRequest) (*Subscription, error)
+ List(context.Context, *SubscriptionFilter) (*SubscriptionList, error)
+ Delete(context.Context, *DeleteSubscriptionRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedSubscriptionsServer()
+}
+
+// UnimplementedSubscriptionsServer must be embedded to have forward compatible implementations.
+type UnimplementedSubscriptionsServer struct {
+}
+
+func (UnimplementedSubscriptionsServer) Create(context.Context, *CreateSubscriptionRequest) (*Subscription, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedSubscriptionsServer) List(context.Context, *SubscriptionFilter) (*SubscriptionList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedSubscriptionsServer) Delete(context.Context, *DeleteSubscriptionRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedSubscriptionsServer) mustEmbedUnimplementedSubscriptionsServer() {}
+
+// UnsafeSubscriptionsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SubscriptionsServer will
+// result in compilation errors.
+type UnsafeSubscriptionsServer interface {
+ mustEmbedUnimplementedSubscriptionsServer()
+}
+
+func RegisterSubscriptionsServer(s grpc.ServiceRegistrar, srv SubscriptionsServer) {
+ s.RegisterService(&Subscriptions_ServiceDesc, srv)
+}
+
+func _Subscriptions_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateSubscriptionRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SubscriptionsServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Subscriptions_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SubscriptionsServer).Create(ctx, req.(*CreateSubscriptionRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Subscriptions_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SubscriptionFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SubscriptionsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Subscriptions_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SubscriptionsServer).List(ctx, req.(*SubscriptionFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Subscriptions_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteSubscriptionRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SubscriptionsServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Subscriptions_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SubscriptionsServer).Delete(ctx, req.(*DeleteSubscriptionRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Subscriptions_ServiceDesc is the grpc.ServiceDesc for Subscriptions service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Subscriptions_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.events.Subscriptions",
+ HandlerType: (*SubscriptionsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Subscriptions_Create_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Subscriptions_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Subscriptions_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "subscriptions.platform.proto",
+}
diff --git a/proto/platform/iam/v1/account_associations.platform.event.go b/proto/platform/iam/v1/account_associations.platform.event.go
new file mode 100644
index 00000000..c336f7e9
--- /dev/null
+++ b/proto/platform/iam/v1/account_associations.platform.event.go
@@ -0,0 +1,41 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *AccountAssociations) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return x.GetGroup(), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *AccountAssociations) CloudEventsSubject() string {
+ return x.Group
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteAccountAssociationsRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return x.GetGroup(), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteAccountAssociationsRequest) CloudEventsSubject() string {
+ return x.Group
+}
+
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
+func (x *DeleteAccountAssociationsRequest) CloudEventsRedact() interface{} {
+ return nil
+}
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.go b/proto/platform/iam/v1/account_associations.platform.pb.go
new file mode 100644
index 00000000..3be34195
--- /dev/null
+++ b/proto/platform/iam/v1/account_associations.platform.pb.go
@@ -0,0 +1,1120 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: account_associations.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type AccountAssociationsStatus_State int32
+
+const (
+ AccountAssociationsStatus_UNKNOWN AccountAssociationsStatus_State = 0
+ AccountAssociationsStatus_Ready AccountAssociationsStatus_State = 1
+ AccountAssociationsStatus_NotReady AccountAssociationsStatus_State = 2
+)
+
+// Enum value maps for AccountAssociationsStatus_State.
+var (
+ AccountAssociationsStatus_State_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "Ready",
+ 2: "NotReady",
+ }
+ AccountAssociationsStatus_State_value = map[string]int32{
+ "UNKNOWN": 0,
+ "Ready": 1,
+ "NotReady": 2,
+ }
+)
+
+func (x AccountAssociationsStatus_State) Enum() *AccountAssociationsStatus_State {
+ p := new(AccountAssociationsStatus_State)
+ *p = x
+ return p
+}
+
+func (x AccountAssociationsStatus_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (AccountAssociationsStatus_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_account_associations_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (AccountAssociationsStatus_State) Type() protoreflect.EnumType {
+ return &file_account_associations_platform_proto_enumTypes[0]
+}
+
+func (x AccountAssociationsStatus_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AccountAssociationsStatus_State.Descriptor instead.
+func (AccountAssociationsStatus_State) EnumDescriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{4, 0}
+}
+
+type AccountAssociationsCheckRequest_AccountType int32
+
+const (
+ AccountAssociationsCheckRequest_UNKNOWN AccountAssociationsCheckRequest_AccountType = 0
+ AccountAssociationsCheckRequest_GOOGLE AccountAssociationsCheckRequest_AccountType = 1
+ AccountAssociationsCheckRequest_AMAZON AccountAssociationsCheckRequest_AccountType = 2
+)
+
+// Enum value maps for AccountAssociationsCheckRequest_AccountType.
+var (
+ AccountAssociationsCheckRequest_AccountType_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "GOOGLE",
+ 2: "AMAZON",
+ }
+ AccountAssociationsCheckRequest_AccountType_value = map[string]int32{
+ "UNKNOWN": 0,
+ "GOOGLE": 1,
+ "AMAZON": 2,
+ }
+)
+
+func (x AccountAssociationsCheckRequest_AccountType) Enum() *AccountAssociationsCheckRequest_AccountType {
+ p := new(AccountAssociationsCheckRequest_AccountType)
+ *p = x
+ return p
+}
+
+func (x AccountAssociationsCheckRequest_AccountType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (AccountAssociationsCheckRequest_AccountType) Descriptor() protoreflect.EnumDescriptor {
+ return file_account_associations_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (AccountAssociationsCheckRequest_AccountType) Type() protoreflect.EnumType {
+ return &file_account_associations_platform_proto_enumTypes[1]
+}
+
+func (x AccountAssociationsCheckRequest_AccountType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AccountAssociationsCheckRequest_AccountType.Descriptor instead.
+func (AccountAssociationsCheckRequest_AccountType) EnumDescriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{5, 0}
+}
+
+type AccountAssociations struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group is the group with which this account information is associated.
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ // amazon holds information associating an Amazon account with the group.
+ Amazon *AccountAssociations_Amazon `protobuf:"bytes,2,opt,name=amazon,proto3" json:"amazon,omitempty"`
+ // google holds information associating a Google project with the group.
+ Google *AccountAssociations_Google `protobuf:"bytes,3,opt,name=google,proto3" json:"google,omitempty"`
+ // github holds information associating a GitHub installation with the group.
+ // Note: this AccountAssociation type is EXPERIMENTAL.
+ Github *AccountAssociations_GitHubInstallation `protobuf:"bytes,6,opt,name=github,proto3" json:"github,omitempty"`
+ Chainguard *AccountAssociations_Chainguard `protobuf:"bytes,7,opt,name=chainguard,proto3" json:"chainguard,omitempty"`
+ // name of the association.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this association.
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+}
+
+func (x *AccountAssociations) Reset() {
+ *x = AccountAssociations{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociations) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociations) ProtoMessage() {}
+
+func (x *AccountAssociations) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociations.ProtoReflect.Descriptor instead.
+func (*AccountAssociations) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AccountAssociations) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *AccountAssociations) GetAmazon() *AccountAssociations_Amazon {
+ if x != nil {
+ return x.Amazon
+ }
+ return nil
+}
+
+func (x *AccountAssociations) GetGoogle() *AccountAssociations_Google {
+ if x != nil {
+ return x.Google
+ }
+ return nil
+}
+
+func (x *AccountAssociations) GetGithub() *AccountAssociations_GitHubInstallation {
+ if x != nil {
+ return x.Github
+ }
+ return nil
+}
+
+func (x *AccountAssociations) GetChainguard() *AccountAssociations_Chainguard {
+ if x != nil {
+ return x.Chainguard
+ }
+ return nil
+}
+
+func (x *AccountAssociations) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AccountAssociations) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+type AccountAssociationsList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*AccountAssociations `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *AccountAssociationsList) Reset() {
+ *x = AccountAssociationsList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociationsList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociationsList) ProtoMessage() {}
+
+func (x *AccountAssociationsList) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociationsList.ProtoReflect.Descriptor instead.
+func (*AccountAssociationsList) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *AccountAssociationsList) GetItems() []*AccountAssociations {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type AccountAssociationsFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group is the exact UIDP of the group whose associations we want to list.
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ // name is the exact name of the association.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *AccountAssociationsFilter) Reset() {
+ *x = AccountAssociationsFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociationsFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociationsFilter) ProtoMessage() {}
+
+func (x *AccountAssociationsFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociationsFilter.ProtoReflect.Descriptor instead.
+func (*AccountAssociationsFilter) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *AccountAssociationsFilter) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *AccountAssociationsFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type DeleteAccountAssociationsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group is the exact UIDP of the group whose associations we want to delete.
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+}
+
+func (x *DeleteAccountAssociationsRequest) Reset() {
+ *x = DeleteAccountAssociationsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteAccountAssociationsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteAccountAssociationsRequest) ProtoMessage() {}
+
+func (x *DeleteAccountAssociationsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteAccountAssociationsRequest.ProtoReflect.Descriptor instead.
+func (*DeleteAccountAssociationsRequest) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *DeleteAccountAssociationsRequest) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+type AccountAssociationsStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Ready AccountAssociationsStatus_State `protobuf:"varint,1,opt,name=ready,proto3,enum=chainguard.platform.iam.AccountAssociationsStatus_State" json:"ready,omitempty"`
+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+ Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
+}
+
+func (x *AccountAssociationsStatus) Reset() {
+ *x = AccountAssociationsStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociationsStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociationsStatus) ProtoMessage() {}
+
+func (x *AccountAssociationsStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociationsStatus.ProtoReflect.Descriptor instead.
+func (*AccountAssociationsStatus) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *AccountAssociationsStatus) GetReady() AccountAssociationsStatus_State {
+ if x != nil {
+ return x.Ready
+ }
+ return AccountAssociationsStatus_UNKNOWN
+}
+
+func (x *AccountAssociationsStatus) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *AccountAssociationsStatus) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+type AccountAssociationsCheckRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group is the exact UIDP of the group whose associations we want to check
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ AccountType AccountAssociationsCheckRequest_AccountType `protobuf:"varint,2,opt,name=account_type,json=accountType,proto3,enum=chainguard.platform.iam.AccountAssociationsCheckRequest_AccountType" json:"account_type,omitempty"`
+}
+
+func (x *AccountAssociationsCheckRequest) Reset() {
+ *x = AccountAssociationsCheckRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociationsCheckRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociationsCheckRequest) ProtoMessage() {}
+
+func (x *AccountAssociationsCheckRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociationsCheckRequest.ProtoReflect.Descriptor instead.
+func (*AccountAssociationsCheckRequest) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *AccountAssociationsCheckRequest) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *AccountAssociationsCheckRequest) GetAccountType() AccountAssociationsCheckRequest_AccountType {
+ if x != nil {
+ return x.AccountType
+ }
+ return AccountAssociationsCheckRequest_UNKNOWN
+}
+
+type AccountAssociations_Amazon struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
+}
+
+func (x *AccountAssociations_Amazon) Reset() {
+ *x = AccountAssociations_Amazon{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociations_Amazon) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociations_Amazon) ProtoMessage() {}
+
+func (x *AccountAssociations_Amazon) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociations_Amazon.ProtoReflect.Descriptor instead.
+func (*AccountAssociations_Amazon) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *AccountAssociations_Amazon) GetAccount() string {
+ if x != nil {
+ return x.Account
+ }
+ return ""
+}
+
+type AccountAssociations_Google struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+ ProjectNumber string `protobuf:"bytes,2,opt,name=project_number,json=projectNumber,proto3" json:"project_number,omitempty"`
+}
+
+func (x *AccountAssociations_Google) Reset() {
+ *x = AccountAssociations_Google{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociations_Google) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociations_Google) ProtoMessage() {}
+
+func (x *AccountAssociations_Google) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociations_Google.ProtoReflect.Descriptor instead.
+func (*AccountAssociations_Google) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *AccountAssociations_Google) GetProjectId() string {
+ if x != nil {
+ return x.ProjectId
+ }
+ return ""
+}
+
+func (x *AccountAssociations_Google) GetProjectNumber() string {
+ if x != nil {
+ return x.ProjectNumber
+ }
+ return ""
+}
+
+type AccountAssociations_GitHubInstallation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // GitHub hostname app is associated with. Output only.
+ Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
+ // GitHub App ID. Output only.
+ AppId int64 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+ // GitHub App Installation ID. Takes precedence over name.
+ InstallationId int64 `protobuf:"varint,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"`
+ // GitHub user/org name the installation is installed on.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *AccountAssociations_GitHubInstallation) Reset() {
+ *x = AccountAssociations_GitHubInstallation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociations_GitHubInstallation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociations_GitHubInstallation) ProtoMessage() {}
+
+func (x *AccountAssociations_GitHubInstallation) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociations_GitHubInstallation.ProtoReflect.Descriptor instead.
+func (*AccountAssociations_GitHubInstallation) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 2}
+}
+
+func (x *AccountAssociations_GitHubInstallation) GetHost() string {
+ if x != nil {
+ return x.Host
+ }
+ return ""
+}
+
+func (x *AccountAssociations_GitHubInstallation) GetAppId() int64 {
+ if x != nil {
+ return x.AppId
+ }
+ return 0
+}
+
+func (x *AccountAssociations_GitHubInstallation) GetInstallationId() int64 {
+ if x != nil {
+ return x.InstallationId
+ }
+ return 0
+}
+
+func (x *AccountAssociations_GitHubInstallation) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type AccountAssociations_Chainguard struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // service_bindings map from the Chainguard service principal to the
+ // UIDP of the identity that service should assume. Constraints:
+ // - The identity must live directly under "group",
+ // - The identity must be a service_principal,
+ // - The service_principal of the identity must match the key of this map.
+ // Note that the key space of this must match the ServicePrincipal enum,
+ // but the enum type itself cannot be used here because of:
+ // https://groups.google.com/g/protobuf/c/ikeldBe60eI
+ ServiceBindings map[string]string `protobuf:"bytes,1,rep,name=service_bindings,json=serviceBindings,proto3" json:"service_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *AccountAssociations_Chainguard) Reset() {
+ *x = AccountAssociations_Chainguard{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_account_associations_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AccountAssociations_Chainguard) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AccountAssociations_Chainguard) ProtoMessage() {}
+
+func (x *AccountAssociations_Chainguard) ProtoReflect() protoreflect.Message {
+ mi := &file_account_associations_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AccountAssociations_Chainguard.ProtoReflect.Descriptor instead.
+func (*AccountAssociations_Chainguard) Descriptor() ([]byte, []int) {
+ return file_account_associations_platform_proto_rawDescGZIP(), []int{0, 3}
+}
+
+func (x *AccountAssociations_Chainguard) GetServiceBindings() map[string]string {
+ if x != nil {
+ return x.ServiceBindings
+ }
+ return nil
+}
+
+var File_account_associations_platform_proto protoreflect.FileDescriptor
+
+var file_account_associations_platform_proto_rawDesc = []byte{
+ 0x0a, 0x23, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1b,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+ 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x06, 0x0a, 0x13,
+ 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x12, 0x4b, 0x0a, 0x06, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x12, 0x4b,
+ 0x0a, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x52, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x57, 0x0a, 0x06, 0x67,
+ 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
+ 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x67, 0x69,
+ 0x74, 0x68, 0x75, 0x62, 0x12, 0x57, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x1a, 0x22, 0x0a, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+ 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x4e, 0x0a, 0x06, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64,
+ 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+ 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x7c, 0x0a, 0x12, 0x47, 0x69, 0x74, 0x48, 0x75,
+ 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+ 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73,
+ 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xc9, 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x12, 0x77, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+ 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x42, 0x0a,
+ 0x14, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
+ 0x01, 0x22, 0x5d, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f,
+ 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
+ 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x45, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63,
+ 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xcc, 0x01, 0x0a, 0x19, 0x41, 0x63,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
+ 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2d, 0x0a, 0x05, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
+ 0x09, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f,
+ 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x02, 0x22, 0xdc, 0x01, 0x0a, 0x1f, 0x41, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x67, 0x0a, 0x0c, 0x61, 0x63,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x68,
+ 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54,
+ 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
+ 0x0a, 0x0a, 0x06, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41,
+ 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x10, 0x02, 0x32, 0xbc, 0x08, 0x0a, 0x18, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xec, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
+ 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
+ 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbd, 0x05, 0xc2, 0xf0, 0x8e, 0xfc,
+ 0x0b, 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xec, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2c,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2c, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
+ 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x2c, 0x1a, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbe, 0x05, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
+ 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x18, 0x01, 0x12, 0xa0, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73,
+ 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a,
+ 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63,
+ 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
+ 0x02, 0xbf, 0x05, 0x10, 0x01, 0x12, 0xe0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x12, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
+ 0x70, 0x74, 0x79, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x69,
+ 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73,
+ 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc0,
+ 0x05, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xbb, 0x01, 0x0a, 0x05, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x12, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
+ 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x22, 0x2d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
+ 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x12, 0x04, 0x0a, 0x02, 0xbf, 0x05, 0x42, 0x75, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x23, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_account_associations_platform_proto_rawDescOnce sync.Once
+ file_account_associations_platform_proto_rawDescData = file_account_associations_platform_proto_rawDesc
+)
+
+func file_account_associations_platform_proto_rawDescGZIP() []byte {
+ file_account_associations_platform_proto_rawDescOnce.Do(func() {
+ file_account_associations_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_account_associations_platform_proto_rawDescData)
+ })
+ return file_account_associations_platform_proto_rawDescData
+}
+
+var file_account_associations_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_account_associations_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_account_associations_platform_proto_goTypes = []interface{}{
+ (AccountAssociationsStatus_State)(0), // 0: chainguard.platform.iam.AccountAssociationsStatus.State
+ (AccountAssociationsCheckRequest_AccountType)(0), // 1: chainguard.platform.iam.AccountAssociationsCheckRequest.AccountType
+ (*AccountAssociations)(nil), // 2: chainguard.platform.iam.AccountAssociations
+ (*AccountAssociationsList)(nil), // 3: chainguard.platform.iam.AccountAssociationsList
+ (*AccountAssociationsFilter)(nil), // 4: chainguard.platform.iam.AccountAssociationsFilter
+ (*DeleteAccountAssociationsRequest)(nil), // 5: chainguard.platform.iam.DeleteAccountAssociationsRequest
+ (*AccountAssociationsStatus)(nil), // 6: chainguard.platform.iam.AccountAssociationsStatus
+ (*AccountAssociationsCheckRequest)(nil), // 7: chainguard.platform.iam.AccountAssociationsCheckRequest
+ (*AccountAssociations_Amazon)(nil), // 8: chainguard.platform.iam.AccountAssociations.Amazon
+ (*AccountAssociations_Google)(nil), // 9: chainguard.platform.iam.AccountAssociations.Google
+ (*AccountAssociations_GitHubInstallation)(nil), // 10: chainguard.platform.iam.AccountAssociations.GitHubInstallation
+ (*AccountAssociations_Chainguard)(nil), // 11: chainguard.platform.iam.AccountAssociations.Chainguard
+ nil, // 12: chainguard.platform.iam.AccountAssociations.Chainguard.ServiceBindingsEntry
+ (*emptypb.Empty)(nil), // 13: google.protobuf.Empty
+}
+var file_account_associations_platform_proto_depIdxs = []int32{
+ 8, // 0: chainguard.platform.iam.AccountAssociations.amazon:type_name -> chainguard.platform.iam.AccountAssociations.Amazon
+ 9, // 1: chainguard.platform.iam.AccountAssociations.google:type_name -> chainguard.platform.iam.AccountAssociations.Google
+ 10, // 2: chainguard.platform.iam.AccountAssociations.github:type_name -> chainguard.platform.iam.AccountAssociations.GitHubInstallation
+ 11, // 3: chainguard.platform.iam.AccountAssociations.chainguard:type_name -> chainguard.platform.iam.AccountAssociations.Chainguard
+ 2, // 4: chainguard.platform.iam.AccountAssociationsList.items:type_name -> chainguard.platform.iam.AccountAssociations
+ 0, // 5: chainguard.platform.iam.AccountAssociationsStatus.ready:type_name -> chainguard.platform.iam.AccountAssociationsStatus.State
+ 1, // 6: chainguard.platform.iam.AccountAssociationsCheckRequest.account_type:type_name -> chainguard.platform.iam.AccountAssociationsCheckRequest.AccountType
+ 12, // 7: chainguard.platform.iam.AccountAssociations.Chainguard.service_bindings:type_name -> chainguard.platform.iam.AccountAssociations.Chainguard.ServiceBindingsEntry
+ 2, // 8: chainguard.platform.iam.GroupAccountAssociations.Create:input_type -> chainguard.platform.iam.AccountAssociations
+ 2, // 9: chainguard.platform.iam.GroupAccountAssociations.Update:input_type -> chainguard.platform.iam.AccountAssociations
+ 4, // 10: chainguard.platform.iam.GroupAccountAssociations.List:input_type -> chainguard.platform.iam.AccountAssociationsFilter
+ 5, // 11: chainguard.platform.iam.GroupAccountAssociations.Delete:input_type -> chainguard.platform.iam.DeleteAccountAssociationsRequest
+ 7, // 12: chainguard.platform.iam.GroupAccountAssociations.Check:input_type -> chainguard.platform.iam.AccountAssociationsCheckRequest
+ 2, // 13: chainguard.platform.iam.GroupAccountAssociations.Create:output_type -> chainguard.platform.iam.AccountAssociations
+ 2, // 14: chainguard.platform.iam.GroupAccountAssociations.Update:output_type -> chainguard.platform.iam.AccountAssociations
+ 3, // 15: chainguard.platform.iam.GroupAccountAssociations.List:output_type -> chainguard.platform.iam.AccountAssociationsList
+ 13, // 16: chainguard.platform.iam.GroupAccountAssociations.Delete:output_type -> google.protobuf.Empty
+ 6, // 17: chainguard.platform.iam.GroupAccountAssociations.Check:output_type -> chainguard.platform.iam.AccountAssociationsStatus
+ 13, // [13:18] is the sub-list for method output_type
+ 8, // [8:13] 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_account_associations_platform_proto_init() }
+func file_account_associations_platform_proto_init() {
+ if File_account_associations_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_account_associations_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociations); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociationsList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociationsFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteAccountAssociationsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociationsStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociationsCheckRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociations_Amazon); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociations_Google); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociations_GitHubInstallation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_account_associations_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AccountAssociations_Chainguard); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_account_associations_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 11,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_account_associations_platform_proto_goTypes,
+ DependencyIndexes: file_account_associations_platform_proto_depIdxs,
+ EnumInfos: file_account_associations_platform_proto_enumTypes,
+ MessageInfos: file_account_associations_platform_proto_msgTypes,
+ }.Build()
+ File_account_associations_platform_proto = out.File
+ file_account_associations_platform_proto_rawDesc = nil
+ file_account_associations_platform_proto_goTypes = nil
+ file_account_associations_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.gw.go b/proto/platform/iam/v1/account_associations.platform.pb.gw.go
new file mode 100644
index 00000000..090915e1
--- /dev/null
+++ b/proto/platform/iam/v1/account_associations.platform.pb.gw.go
@@ -0,0 +1,623 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: account_associations.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_GroupAccountAssociations_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociations
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupAccountAssociations_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociations
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_GroupAccountAssociations_Update_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociations
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupAccountAssociations_Update_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociations
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_GroupAccountAssociations_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_GroupAccountAssociations_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociationsFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupAccountAssociations_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupAccountAssociations_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociationsFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupAccountAssociations_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_GroupAccountAssociations_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteAccountAssociationsRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupAccountAssociations_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteAccountAssociationsRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_GroupAccountAssociations_Check_0(ctx context.Context, marshaler runtime.Marshaler, client GroupAccountAssociationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociationsCheckRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := client.Check(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupAccountAssociations_Check_0(ctx context.Context, marshaler runtime.Marshaler, server GroupAccountAssociationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AccountAssociationsCheckRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := server.Check(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterGroupAccountAssociationsHandlerServer registers the http handlers for service GroupAccountAssociations to "mux".
+// UnaryRPC :call GroupAccountAssociationsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupAccountAssociationsHandlerFromEndpoint instead.
+func RegisterGroupAccountAssociationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupAccountAssociationsServer) error {
+
+ mux.Handle("POST", pattern_GroupAccountAssociations_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Create", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupAccountAssociations_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_GroupAccountAssociations_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Update", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupAccountAssociations_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_GroupAccountAssociations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/List", runtime.WithHTTPPathPattern("/iam/v1/account_associations"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupAccountAssociations_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_GroupAccountAssociations_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Delete", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupAccountAssociations_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_GroupAccountAssociations_Check_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Check", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}:check"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupAccountAssociations_Check_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Check_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterGroupAccountAssociationsHandlerFromEndpoint is same as RegisterGroupAccountAssociationsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterGroupAccountAssociationsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterGroupAccountAssociationsHandler(ctx, mux, conn)
+}
+
+// RegisterGroupAccountAssociationsHandler registers the http handlers for service GroupAccountAssociations to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterGroupAccountAssociationsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterGroupAccountAssociationsHandlerClient(ctx, mux, NewGroupAccountAssociationsClient(conn))
+}
+
+// RegisterGroupAccountAssociationsHandlerClient registers the http handlers for service GroupAccountAssociations
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupAccountAssociationsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupAccountAssociationsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "GroupAccountAssociationsClient" to call the correct interceptors.
+func RegisterGroupAccountAssociationsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupAccountAssociationsClient) error {
+
+ mux.Handle("POST", pattern_GroupAccountAssociations_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Create", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupAccountAssociations_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_GroupAccountAssociations_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Update", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupAccountAssociations_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_GroupAccountAssociations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/List", runtime.WithHTTPPathPattern("/iam/v1/account_associations"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupAccountAssociations_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_GroupAccountAssociations_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Delete", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupAccountAssociations_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_GroupAccountAssociations_Check_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupAccountAssociations/Check", runtime.WithHTTPPathPattern("/iam/v1/account_associations/{group=**}:check"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupAccountAssociations_Check_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupAccountAssociations_Check_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_GroupAccountAssociations_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
+
+ pattern_GroupAccountAssociations_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
+
+ pattern_GroupAccountAssociations_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "account_associations"}, ""))
+
+ pattern_GroupAccountAssociations_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, ""))
+
+ pattern_GroupAccountAssociations_Check_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "account_associations", "group"}, "check"))
+)
+
+var (
+ forward_GroupAccountAssociations_Create_0 = runtime.ForwardResponseMessage
+
+ forward_GroupAccountAssociations_Update_0 = runtime.ForwardResponseMessage
+
+ forward_GroupAccountAssociations_List_0 = runtime.ForwardResponseMessage
+
+ forward_GroupAccountAssociations_Delete_0 = runtime.ForwardResponseMessage
+
+ forward_GroupAccountAssociations_Check_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/account_associations.platform.proto b/proto/platform/iam/v1/account_associations.platform.proto
new file mode 100644
index 00000000..b6ca2756
--- /dev/null
+++ b/proto/platform/iam/v1/account_associations.platform.proto
@@ -0,0 +1,192 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMAccountAssociationsProto";
+
+package chainguard.platform.iam;
+
+import "google/protobuf/empty.proto";
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+
+service GroupAccountAssociations {
+ rpc Create(AccountAssociations) returns (AccountAssociations) {
+ option (google.api.http) = {
+ post: "/iam/v1/account_associations/{group=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.account_associations.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(AccountAssociations) returns (AccountAssociations) {
+ option (google.api.http) = {
+ put: "/iam/v1/account_associations/{group=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.account_associations.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(AccountAssociationsFilter) returns (AccountAssociationsList) {
+ option (google.api.http) = {
+ get: "/iam/v1/account_associations"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteAccountAssociationsRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/account_associations/{group=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.account_associations.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Check(AccountAssociationsCheckRequest) returns (AccountAssociationsStatus) {
+ option (google.api.http) = {
+ post: "/iam/v1/account_associations/{group=**}:check"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ACCOUNT_ASSOCIATIONS_LIST]
+ }
+ };
+ }
+}
+
+message AccountAssociations {
+ // group is the group with which this account information is associated.
+ string group = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // amazon holds information associating an Amazon account with the group.
+ Amazon amazon = 2;
+
+ // google holds information associating a Google project with the group.
+ Google google = 3;
+
+ // github holds information associating a GitHub installation with the group.
+ // Note: this AccountAssociation type is EXPERIMENTAL.
+ GitHubInstallation github = 6;
+
+ Chainguard chainguard = 7;
+
+ // name of the association.
+ string name = 4;
+
+ // a short description of this association.
+ string description = 5;
+
+ // TODO(#617): Azure
+
+ message Amazon {
+ string account = 1;
+ }
+
+ message Google {
+ string project_id = 1;
+ string project_number = 2;
+ }
+
+ message GitHubInstallation {
+ // GitHub hostname app is associated with. Output only.
+ string host = 1;
+
+ // GitHub App ID. Output only.
+ int64 app_id = 2;
+
+ // GitHub App Installation ID. Takes precedence over name.
+ int64 installation_id = 3;
+
+ // GitHub user/org name the installation is installed on.
+ string name = 4;
+ }
+
+ message Chainguard {
+ // service_bindings map from the Chainguard service principal to the
+ // UIDP of the identity that service should assume. Constraints:
+ // - The identity must live directly under "group",
+ // - The identity must be a service_principal,
+ // - The service_principal of the identity must match the key of this map.
+ // Note that the key space of this must match the ServicePrincipal enum,
+ // but the enum type itself cannot be used here because of:
+ // https://groups.google.com/g/protobuf/c/ikeldBe60eI
+ map service_bindings = 1;
+ }
+
+ // next id: 8
+}
+
+message AccountAssociationsList {
+ repeated AccountAssociations items = 1;
+}
+
+message AccountAssociationsFilter {
+ // group is the exact UIDP of the group whose associations we want to list.
+ string group = 1;
+ // name is the exact name of the association.
+ string name = 2;
+}
+
+message DeleteAccountAssociationsRequest {
+ // group is the exact UIDP of the group whose associations we want to delete.
+ string group = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message AccountAssociationsStatus {
+ enum State {
+ UNKNOWN = 0;
+ Ready = 1;
+ NotReady = 2;
+ }
+
+ State ready = 1;
+ string reason = 2;
+ string message = 3;
+}
+
+message AccountAssociationsCheckRequest {
+ // group is the exact UIDP of the group whose associations we want to check
+ string group = 1 [(chainguard.annotations.iam_scope) = true];
+
+ AccountType account_type = 2;
+
+ enum AccountType {
+ UNKNOWN = 0;
+ GOOGLE = 1;
+ AMAZON = 2;
+ }
+}
diff --git a/proto/platform/iam/v1/account_associations.platform_grpc.pb.go b/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
new file mode 100644
index 00000000..195b4de6
--- /dev/null
+++ b/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
@@ -0,0 +1,259 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: account_associations.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ GroupAccountAssociations_Create_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Create"
+ GroupAccountAssociations_Update_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Update"
+ GroupAccountAssociations_List_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/List"
+ GroupAccountAssociations_Delete_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Delete"
+ GroupAccountAssociations_Check_FullMethodName = "/chainguard.platform.iam.GroupAccountAssociations/Check"
+)
+
+// GroupAccountAssociationsClient is the client API for GroupAccountAssociations service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type GroupAccountAssociationsClient interface {
+ Create(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error)
+ Update(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error)
+ List(ctx context.Context, in *AccountAssociationsFilter, opts ...grpc.CallOption) (*AccountAssociationsList, error)
+ Delete(ctx context.Context, in *DeleteAccountAssociationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Check(ctx context.Context, in *AccountAssociationsCheckRequest, opts ...grpc.CallOption) (*AccountAssociationsStatus, error)
+}
+
+type groupAccountAssociationsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewGroupAccountAssociationsClient(cc grpc.ClientConnInterface) GroupAccountAssociationsClient {
+ return &groupAccountAssociationsClient{cc}
+}
+
+func (c *groupAccountAssociationsClient) Create(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error) {
+ out := new(AccountAssociations)
+ err := c.cc.Invoke(ctx, GroupAccountAssociations_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupAccountAssociationsClient) Update(ctx context.Context, in *AccountAssociations, opts ...grpc.CallOption) (*AccountAssociations, error) {
+ out := new(AccountAssociations)
+ err := c.cc.Invoke(ctx, GroupAccountAssociations_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupAccountAssociationsClient) List(ctx context.Context, in *AccountAssociationsFilter, opts ...grpc.CallOption) (*AccountAssociationsList, error) {
+ out := new(AccountAssociationsList)
+ err := c.cc.Invoke(ctx, GroupAccountAssociations_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupAccountAssociationsClient) Delete(ctx context.Context, in *DeleteAccountAssociationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, GroupAccountAssociations_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupAccountAssociationsClient) Check(ctx context.Context, in *AccountAssociationsCheckRequest, opts ...grpc.CallOption) (*AccountAssociationsStatus, error) {
+ out := new(AccountAssociationsStatus)
+ err := c.cc.Invoke(ctx, GroupAccountAssociations_Check_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// GroupAccountAssociationsServer is the server API for GroupAccountAssociations service.
+// All implementations must embed UnimplementedGroupAccountAssociationsServer
+// for forward compatibility
+type GroupAccountAssociationsServer interface {
+ Create(context.Context, *AccountAssociations) (*AccountAssociations, error)
+ Update(context.Context, *AccountAssociations) (*AccountAssociations, error)
+ List(context.Context, *AccountAssociationsFilter) (*AccountAssociationsList, error)
+ Delete(context.Context, *DeleteAccountAssociationsRequest) (*emptypb.Empty, error)
+ Check(context.Context, *AccountAssociationsCheckRequest) (*AccountAssociationsStatus, error)
+ mustEmbedUnimplementedGroupAccountAssociationsServer()
+}
+
+// UnimplementedGroupAccountAssociationsServer must be embedded to have forward compatible implementations.
+type UnimplementedGroupAccountAssociationsServer struct {
+}
+
+func (UnimplementedGroupAccountAssociationsServer) Create(context.Context, *AccountAssociations) (*AccountAssociations, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedGroupAccountAssociationsServer) Update(context.Context, *AccountAssociations) (*AccountAssociations, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedGroupAccountAssociationsServer) List(context.Context, *AccountAssociationsFilter) (*AccountAssociationsList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedGroupAccountAssociationsServer) Delete(context.Context, *DeleteAccountAssociationsRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedGroupAccountAssociationsServer) Check(context.Context, *AccountAssociationsCheckRequest) (*AccountAssociationsStatus, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Check not implemented")
+}
+func (UnimplementedGroupAccountAssociationsServer) mustEmbedUnimplementedGroupAccountAssociationsServer() {
+}
+
+// UnsafeGroupAccountAssociationsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to GroupAccountAssociationsServer will
+// result in compilation errors.
+type UnsafeGroupAccountAssociationsServer interface {
+ mustEmbedUnimplementedGroupAccountAssociationsServer()
+}
+
+func RegisterGroupAccountAssociationsServer(s grpc.ServiceRegistrar, srv GroupAccountAssociationsServer) {
+ s.RegisterService(&GroupAccountAssociations_ServiceDesc, srv)
+}
+
+func _GroupAccountAssociations_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AccountAssociations)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupAccountAssociationsServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupAccountAssociations_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupAccountAssociationsServer).Create(ctx, req.(*AccountAssociations))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupAccountAssociations_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AccountAssociations)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupAccountAssociationsServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupAccountAssociations_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupAccountAssociationsServer).Update(ctx, req.(*AccountAssociations))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupAccountAssociations_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AccountAssociationsFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupAccountAssociationsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupAccountAssociations_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupAccountAssociationsServer).List(ctx, req.(*AccountAssociationsFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupAccountAssociations_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteAccountAssociationsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupAccountAssociationsServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupAccountAssociations_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupAccountAssociationsServer).Delete(ctx, req.(*DeleteAccountAssociationsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupAccountAssociations_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AccountAssociationsCheckRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupAccountAssociationsServer).Check(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupAccountAssociations_Check_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupAccountAssociationsServer).Check(ctx, req.(*AccountAssociationsCheckRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// GroupAccountAssociations_ServiceDesc is the grpc.ServiceDesc for GroupAccountAssociations service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var GroupAccountAssociations_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.GroupAccountAssociations",
+ HandlerType: (*GroupAccountAssociationsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _GroupAccountAssociations_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _GroupAccountAssociations_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _GroupAccountAssociations_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _GroupAccountAssociations_Delete_Handler,
+ },
+ {
+ MethodName: "Check",
+ Handler: _GroupAccountAssociations_Check_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "account_associations.platform.proto",
+}
diff --git a/proto/platform/iam/v1/clients.go b/proto/platform/iam/v1/clients.go
new file mode 100644
index 00000000..1e1986c7
--- /dev/null
+++ b/proto/platform/iam/v1/clients.go
@@ -0,0 +1,179 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+ events "chainguard.dev/sdk/proto/platform/events/v1"
+)
+
+type Clients interface {
+ Groups() GroupsClient
+ GroupInvites() GroupInvitesClient
+ Roles() RolesClient
+ RoleBindings() RoleBindingsClient
+
+ Identities() IdentitiesClient
+ DeprecatedIdentities() events.IdentitiesClient
+ IdentityProviders() IdentityProvidersClient
+
+ AccountAssociations() GroupAccountAssociationsClient
+
+ Subscriptions() events.SubscriptionsClient
+
+ Policies() PoliciesClient
+
+ Sigstore() SigstoreServiceClient
+
+ Close() error
+}
+
+func NewClients(ctx context.Context, iamURL string, token string) (Clients, error) {
+ iamURI, err := url.Parse(iamURL)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse iam service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*iamURI)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ group: NewGroupsClient(conn),
+ groupInvite: NewGroupInvitesClient(conn),
+ role: NewRolesClient(conn),
+ roleBinding: NewRoleBindingsClient(conn),
+ identities: NewIdentitiesClient(conn),
+ deprecatedIdentities: events.NewIdentitiesClient(conn),
+ identityProviders: NewIdentityProvidersClient(conn),
+
+ accountAssociations: NewGroupAccountAssociationsClient(conn),
+
+ subscription: events.NewSubscriptionsClient(conn),
+
+ policy: NewPoliciesClient(conn),
+
+ sigstore: NewSigstoreServiceClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ group: NewGroupsClient(conn),
+ groupInvite: NewGroupInvitesClient(conn),
+ role: NewRolesClient(conn),
+ roleBinding: NewRoleBindingsClient(conn),
+ identities: NewIdentitiesClient(conn),
+ deprecatedIdentities: events.NewIdentitiesClient(conn),
+ identityProviders: NewIdentityProvidersClient(conn),
+
+ accountAssociations: NewGroupAccountAssociationsClient(conn),
+
+ subscription: events.NewSubscriptionsClient(conn),
+
+ policy: NewPoliciesClient(conn),
+ sigstore: NewSigstoreServiceClient(conn),
+
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ group GroupsClient
+ groupInvite GroupInvitesClient
+ role RolesClient
+ roleBinding RoleBindingsClient
+ identities IdentitiesClient
+ deprecatedIdentities events.IdentitiesClient
+ identityProviders IdentityProvidersClient
+
+ accountAssociations GroupAccountAssociationsClient
+
+ subscription events.SubscriptionsClient
+
+ policy PoliciesClient
+
+ sigstore SigstoreServiceClient
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) Groups() GroupsClient {
+ return c.group
+}
+
+func (c *clients) GroupInvites() GroupInvitesClient {
+ return c.groupInvite
+}
+
+func (c *clients) Roles() RolesClient {
+ return c.role
+}
+
+func (c *clients) RoleBindings() RoleBindingsClient {
+ return c.roleBinding
+}
+
+func (c *clients) Identities() IdentitiesClient {
+ return c.identities
+}
+
+func (c *clients) DeprecatedIdentities() events.IdentitiesClient {
+ return c.deprecatedIdentities
+}
+
+func (c *clients) IdentityProviders() IdentityProvidersClient {
+ return c.identityProviders
+}
+
+func (c *clients) AccountAssociations() GroupAccountAssociationsClient {
+ return c.accountAssociations
+}
+
+func (c *clients) Subscriptions() events.SubscriptionsClient {
+ return c.subscription
+}
+
+func (c *clients) Policies() PoliciesClient {
+ return c.policy
+}
+
+func (c *clients) Sigstore() SigstoreServiceClient {
+ return c.sigstore
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/iam/v1/doc.go b/proto/platform/iam/v1/doc.go
new file mode 100644
index 00000000..413894e6
--- /dev/null
+++ b/proto/platform/iam/v1/doc.go
@@ -0,0 +1,19 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Generate the proto definitions
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. group.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. group_invites.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. role.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. role_binding.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identity.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. account_associations.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. policies.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identity_providers.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. sigstore.platform.proto
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing IAM interactions for the Console.
+package v1
diff --git a/proto/platform/iam/v1/group.platform.event.go b/proto/platform/iam/v1/group.platform.event.go
new file mode 100644
index 00000000..fba1b291
--- /dev/null
+++ b/proto/platform/iam/v1/group.platform.event.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import "chainguard.dev/sdk/uidp"
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Group) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return x.GetId(), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Group) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteGroupRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteGroupRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/group.platform.pb.go b/proto/platform/iam/v1/group.platform.pb.go
new file mode 100644
index 00000000..f93c1668
--- /dev/null
+++ b/proto/platform/iam/v1/group.platform.pb.go
@@ -0,0 +1,570 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: group.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Group struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The group UIDP under which this group resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human readable name of group.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human readable of group.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // resource_limits indicate the maximum number of resources allowed for this group by type.
+ ResourceLimits map[string]int32 `protobuf:"bytes,4,rep,name=resource_limits,json=resourceLimits,proto3" json:"resource_limits,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+ // verified means we've verified the owners of this organization. Restrictions include:
+ // - Only organizations (root groups) can be verified
+ // - Property can only be set by manually by Chainguardians
+ // - If verified is set, the organizations name field must be globally unique
+ // - If verified is set the organizations name should be a domain name
+ Verified bool `protobuf:"varint,5,opt,name=verified,proto3" json:"verified,omitempty"`
+}
+
+func (x *Group) Reset() {
+ *x = Group{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Group) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group) ProtoMessage() {}
+
+func (x *Group) ProtoReflect() protoreflect.Message {
+ mi := &file_group_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Group.ProtoReflect.Descriptor instead.
+func (*Group) Descriptor() ([]byte, []int) {
+ return file_group_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Group) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Group) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Group) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Group) GetResourceLimits() map[string]int32 {
+ if x != nil {
+ return x.ResourceLimits
+ }
+ return nil
+}
+
+func (x *Group) GetVerified() bool {
+ if x != nil {
+ return x.Verified
+ }
+ return false
+}
+
+type GroupList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Group `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *GroupList) Reset() {
+ *x = GroupList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupList) ProtoMessage() {}
+
+func (x *GroupList) ProtoReflect() protoreflect.Message {
+ mi := &file_group_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupList.ProtoReflect.Descriptor instead.
+func (*GroupList) Descriptor() ([]byte, []int) {
+ return file_group_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *GroupList) GetItems() []*Group {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type GroupFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // name is the exact name of the record.
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *GroupFilter) Reset() {
+ *x = GroupFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupFilter) ProtoMessage() {}
+
+func (x *GroupFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_group_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupFilter.ProtoReflect.Descriptor instead.
+func (*GroupFilter) Descriptor() ([]byte, []int) {
+ return file_group_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *GroupFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *GroupFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *GroupFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type CreateGroupRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent, The Group UIDP path under which the new Group resides.
+ // This is effectively the iam_scope for Create requests, but because
+ // we also allow users to create new "root" groups, we check the scoping
+ // manually. Parent is allowed to be a prefix of a UIDP of a Group within
+ // scope, or the name of a Group in scope.
+ Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+ // Group to create.
+ Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
+}
+
+func (x *CreateGroupRequest) Reset() {
+ *x = CreateGroupRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateGroupRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateGroupRequest) ProtoMessage() {}
+
+func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_group_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead.
+func (*CreateGroupRequest) Descriptor() ([]byte, []int) {
+ return file_group_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *CreateGroupRequest) GetParent() string {
+ if x != nil {
+ return x.Parent
+ }
+ return ""
+}
+
+func (x *CreateGroupRequest) GetGroup() *Group {
+ if x != nil {
+ return x.Group
+ }
+ return nil
+}
+
+type DeleteGroupRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteGroupRequest) Reset() {
+ *x = DeleteGroupRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteGroupRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteGroupRequest) ProtoMessage() {}
+
+func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_group_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead.
+func (*DeleteGroupRequest) Descriptor() ([]byte, []int) {
+ return file_group_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteGroupRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+var File_group_platform_proto protoreflect.FileDescriptor
+
+var file_group_platform_proto_rawDesc = []byte{
+ 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a,
+ 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65,
+ 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31,
+ 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0f,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69,
+ 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72,
+ 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72,
+ 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6d, 0x0a, 0x0b, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x12, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2c,
+ 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xab, 0x05, 0x0a,
+ 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
+ 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
+ 0x12, 0x05, 0x0a, 0x01, 0x65, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12,
+ 0xae, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x1b, 0x1a, 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x05, 0x12, 0x03, 0x0a, 0x01, 0x66, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+ 0x12, 0x75, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x22,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
+ 0x12, 0x05, 0x0a, 0x01, 0x67, 0x10, 0x01, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a,
+ 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f,
+ 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x05, 0x12, 0x03, 0x0a,
+ 0x01, 0x68, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x67, 0x0a, 0x22, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31,
+ 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_group_platform_proto_rawDescOnce sync.Once
+ file_group_platform_proto_rawDescData = file_group_platform_proto_rawDesc
+)
+
+func file_group_platform_proto_rawDescGZIP() []byte {
+ file_group_platform_proto_rawDescOnce.Do(func() {
+ file_group_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_platform_proto_rawDescData)
+ })
+ return file_group_platform_proto_rawDescData
+}
+
+var file_group_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_group_platform_proto_goTypes = []interface{}{
+ (*Group)(nil), // 0: chainguard.platform.iam.Group
+ (*GroupList)(nil), // 1: chainguard.platform.iam.GroupList
+ (*GroupFilter)(nil), // 2: chainguard.platform.iam.GroupFilter
+ (*CreateGroupRequest)(nil), // 3: chainguard.platform.iam.CreateGroupRequest
+ (*DeleteGroupRequest)(nil), // 4: chainguard.platform.iam.DeleteGroupRequest
+ nil, // 5: chainguard.platform.iam.Group.ResourceLimitsEntry
+ (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
+}
+var file_group_platform_proto_depIdxs = []int32{
+ 5, // 0: chainguard.platform.iam.Group.resource_limits:type_name -> chainguard.platform.iam.Group.ResourceLimitsEntry
+ 0, // 1: chainguard.platform.iam.GroupList.items:type_name -> chainguard.platform.iam.Group
+ 6, // 2: chainguard.platform.iam.GroupFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 3: chainguard.platform.iam.CreateGroupRequest.group:type_name -> chainguard.platform.iam.Group
+ 3, // 4: chainguard.platform.iam.Groups.Create:input_type -> chainguard.platform.iam.CreateGroupRequest
+ 0, // 5: chainguard.platform.iam.Groups.Update:input_type -> chainguard.platform.iam.Group
+ 2, // 6: chainguard.platform.iam.Groups.List:input_type -> chainguard.platform.iam.GroupFilter
+ 4, // 7: chainguard.platform.iam.Groups.Delete:input_type -> chainguard.platform.iam.DeleteGroupRequest
+ 0, // 8: chainguard.platform.iam.Groups.Create:output_type -> chainguard.platform.iam.Group
+ 0, // 9: chainguard.platform.iam.Groups.Update:output_type -> chainguard.platform.iam.Group
+ 1, // 10: chainguard.platform.iam.Groups.List:output_type -> chainguard.platform.iam.GroupList
+ 7, // 11: chainguard.platform.iam.Groups.Delete:output_type -> google.protobuf.Empty
+ 8, // [8:12] is the sub-list for method output_type
+ 4, // [4:8] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
+}
+
+func init() { file_group_platform_proto_init() }
+func file_group_platform_proto_init() {
+ if File_group_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_group_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Group); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateGroupRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteGroupRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_group_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_group_platform_proto_goTypes,
+ DependencyIndexes: file_group_platform_proto_depIdxs,
+ MessageInfos: file_group_platform_proto_msgTypes,
+ }.Build()
+ File_group_platform_proto = out.File
+ file_group_platform_proto_rawDesc = nil
+ file_group_platform_proto_goTypes = nil
+ file_group_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/group.platform.pb.gw.go b/proto/platform/iam/v1/group.platform.pb.gw.go
new file mode 100644
index 00000000..7152a1c9
--- /dev/null
+++ b/proto/platform/iam/v1/group.platform.pb.gw.go
@@ -0,0 +1,506 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: group.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Groups_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateGroupRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Group); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
+ }
+
+ protoReq.Parent, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Groups_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateGroupRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Group); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
+ }
+
+ protoReq.Parent, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Groups_Update_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Group
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Groups_Update_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Group
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Groups_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Groups_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Groups_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Groups_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Groups_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Groups_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteGroupRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Groups_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteGroupRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterGroupsHandlerServer registers the http handlers for service Groups to "mux".
+// UnaryRPC :call GroupsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupsHandlerFromEndpoint instead.
+func RegisterGroupsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupsServer) error {
+
+ mux.Handle("POST", pattern_Groups_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Create", runtime.WithHTTPPathPattern("/iam/v1/groups/{parent=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Groups_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Groups_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Update", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Groups_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Groups_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/List", runtime.WithHTTPPathPattern("/iam/v1/groups"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Groups_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Groups_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Delete", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Groups_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterGroupsHandlerFromEndpoint is same as RegisterGroupsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterGroupsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterGroupsHandler(ctx, mux, conn)
+}
+
+// RegisterGroupsHandler registers the http handlers for service Groups to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterGroupsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterGroupsHandlerClient(ctx, mux, NewGroupsClient(conn))
+}
+
+// RegisterGroupsHandlerClient registers the http handlers for service Groups
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "GroupsClient" to call the correct interceptors.
+func RegisterGroupsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupsClient) error {
+
+ mux.Handle("POST", pattern_Groups_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Create", runtime.WithHTTPPathPattern("/iam/v1/groups/{parent=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Groups_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Groups_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Update", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Groups_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Groups_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/List", runtime.WithHTTPPathPattern("/iam/v1/groups"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Groups_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Groups_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Groups/Delete", runtime.WithHTTPPathPattern("/iam/v1/groups/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Groups_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Groups_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Groups_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "parent"}, ""))
+
+ pattern_Groups_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "id"}, ""))
+
+ pattern_Groups_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "groups"}, ""))
+
+ pattern_Groups_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "groups", "id"}, ""))
+)
+
+var (
+ forward_Groups_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Groups_Update_0 = runtime.ForwardResponseMessage
+
+ forward_Groups_List_0 = runtime.ForwardResponseMessage
+
+ forward_Groups_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/group.platform.proto b/proto/platform/iam/v1/group.platform.proto
new file mode 100644
index 00000000..d354c74f
--- /dev/null
+++ b/proto/platform/iam/v1/group.platform.proto
@@ -0,0 +1,127 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMGroupProto";
+
+package chainguard.platform.iam;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Groups {
+ rpc Create(CreateGroupRequest) returns (Group) {
+ option (google.api.http) = {
+ post: "/iam/v1/groups/{parent=**}"
+ body: "group"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUPS_CREATE]
+ // We treat group creation as unscoped in order
+ // to allow users to create new root groups.
+ unscoped: true
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.group.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(Group) returns (Group) {
+ option (google.api.http) = {
+ put: "/iam/v1/groups/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUPS_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.group.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(GroupFilter) returns (GroupList) {
+ option (google.api.http) = {
+ get: "/iam/v1/groups"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUPS_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteGroupRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/groups/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUPS_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.group.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message Group {
+ // id, The group UIDP under which this group resides.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+ // name, human readable name of group.
+ string name = 2;
+ // description, human readable of group.
+ string description = 3;
+ // resource_limits indicate the maximum number of resources allowed for this group by type.
+ map resource_limits = 4;
+ // verified means we've verified the owners of this organization. Restrictions include:
+ // - Only organizations (root groups) can be verified
+ // - Property can only be set by manually by Chainguardians
+ // - If verified is set, the organizations name field must be globally unique
+ // - If verified is set the organizations name should be a domain name
+ bool verified = 5;
+}
+
+message GroupList {
+ repeated Group items = 1;
+}
+
+message GroupFilter {
+ // id is the exact UID of the record.
+ string id = 1;
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 2;
+ // name is the exact name of the record.
+ string name = 3;
+}
+
+message CreateGroupRequest {
+ // parent, The Group UIDP path under which the new Group resides.
+ // This is effectively the iam_scope for Create requests, but because
+ // we also allow users to create new "root" groups, we check the scoping
+ // manually. Parent is allowed to be a prefix of a UIDP of a Group within
+ // scope, or the name of a Group in scope.
+ string parent = 1;
+ // Group to create.
+ Group group = 2;
+}
+
+message DeleteGroupRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
diff --git a/proto/platform/iam/v1/group.platform_grpc.pb.go b/proto/platform/iam/v1/group.platform_grpc.pb.go
new file mode 100644
index 00000000..94c10942
--- /dev/null
+++ b/proto/platform/iam/v1/group.platform_grpc.pb.go
@@ -0,0 +1,221 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: group.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Groups_Create_FullMethodName = "/chainguard.platform.iam.Groups/Create"
+ Groups_Update_FullMethodName = "/chainguard.platform.iam.Groups/Update"
+ Groups_List_FullMethodName = "/chainguard.platform.iam.Groups/List"
+ Groups_Delete_FullMethodName = "/chainguard.platform.iam.Groups/Delete"
+)
+
+// GroupsClient is the client API for Groups service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type GroupsClient interface {
+ Create(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error)
+ Update(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Group, error)
+ List(ctx context.Context, in *GroupFilter, opts ...grpc.CallOption) (*GroupList, error)
+ Delete(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type groupsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewGroupsClient(cc grpc.ClientConnInterface) GroupsClient {
+ return &groupsClient{cc}
+}
+
+func (c *groupsClient) Create(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error) {
+ out := new(Group)
+ err := c.cc.Invoke(ctx, Groups_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupsClient) Update(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Group, error) {
+ out := new(Group)
+ err := c.cc.Invoke(ctx, Groups_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupsClient) List(ctx context.Context, in *GroupFilter, opts ...grpc.CallOption) (*GroupList, error) {
+ out := new(GroupList)
+ err := c.cc.Invoke(ctx, Groups_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupsClient) Delete(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Groups_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// GroupsServer is the server API for Groups service.
+// All implementations must embed UnimplementedGroupsServer
+// for forward compatibility
+type GroupsServer interface {
+ Create(context.Context, *CreateGroupRequest) (*Group, error)
+ Update(context.Context, *Group) (*Group, error)
+ List(context.Context, *GroupFilter) (*GroupList, error)
+ Delete(context.Context, *DeleteGroupRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedGroupsServer()
+}
+
+// UnimplementedGroupsServer must be embedded to have forward compatible implementations.
+type UnimplementedGroupsServer struct {
+}
+
+func (UnimplementedGroupsServer) Create(context.Context, *CreateGroupRequest) (*Group, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedGroupsServer) Update(context.Context, *Group) (*Group, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedGroupsServer) List(context.Context, *GroupFilter) (*GroupList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedGroupsServer) Delete(context.Context, *DeleteGroupRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedGroupsServer) mustEmbedUnimplementedGroupsServer() {}
+
+// UnsafeGroupsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to GroupsServer will
+// result in compilation errors.
+type UnsafeGroupsServer interface {
+ mustEmbedUnimplementedGroupsServer()
+}
+
+func RegisterGroupsServer(s grpc.ServiceRegistrar, srv GroupsServer) {
+ s.RegisterService(&Groups_ServiceDesc, srv)
+}
+
+func _Groups_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateGroupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupsServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Groups_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupsServer).Create(ctx, req.(*CreateGroupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Groups_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Group)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupsServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Groups_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupsServer).Update(ctx, req.(*Group))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Groups_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GroupFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Groups_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupsServer).List(ctx, req.(*GroupFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Groups_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteGroupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupsServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Groups_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupsServer).Delete(ctx, req.(*DeleteGroupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Groups_ServiceDesc is the grpc.ServiceDesc for Groups service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Groups_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.Groups",
+ HandlerType: (*GroupsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Groups_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _Groups_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Groups_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Groups_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "group.platform.proto",
+}
diff --git a/proto/platform/iam/v1/group_invites.platform.event.go b/proto/platform/iam/v1/group_invites.platform.event.go
new file mode 100644
index 00000000..7526996c
--- /dev/null
+++ b/proto/platform/iam/v1/group_invites.platform.event.go
@@ -0,0 +1,48 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *GroupInvite) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *GroupInvite) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.CloudEventsRedact.
+func (x *GroupInvite) CloudEventsRedact() interface{} {
+ return &GroupInvite{
+ Id: x.Id,
+ Expiration: x.Expiration,
+ }
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteGroupInviteRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteGroupInviteRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
new file mode 100644
index 00000000..43ee8f1f
--- /dev/null
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -0,0 +1,934 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: group_invites.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type RegistrationRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Kind:
+ //
+ // *RegistrationRequest_Human_
+ // *RegistrationRequest_Cluster_
+ Kind isRegistrationRequest_Kind `protobuf_oneof:"kind"`
+}
+
+func (x *RegistrationRequest) Reset() {
+ *x = RegistrationRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RegistrationRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RegistrationRequest) ProtoMessage() {}
+
+func (x *RegistrationRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RegistrationRequest.ProtoReflect.Descriptor instead.
+func (*RegistrationRequest) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (m *RegistrationRequest) GetKind() isRegistrationRequest_Kind {
+ if m != nil {
+ return m.Kind
+ }
+ return nil
+}
+
+func (x *RegistrationRequest) GetHuman() *RegistrationRequest_Human {
+ if x, ok := x.GetKind().(*RegistrationRequest_Human_); ok {
+ return x.Human
+ }
+ return nil
+}
+
+func (x *RegistrationRequest) GetCluster() *RegistrationRequest_Cluster {
+ if x, ok := x.GetKind().(*RegistrationRequest_Cluster_); ok {
+ return x.Cluster
+ }
+ return nil
+}
+
+type isRegistrationRequest_Kind interface {
+ isRegistrationRequest_Kind()
+}
+
+type RegistrationRequest_Human_ struct {
+ Human *RegistrationRequest_Human `protobuf:"bytes,1,opt,name=human,proto3,oneof"`
+}
+
+type RegistrationRequest_Cluster_ struct {
+ Cluster *RegistrationRequest_Cluster `protobuf:"bytes,2,opt,name=cluster,proto3,oneof"`
+}
+
+func (*RegistrationRequest_Human_) isRegistrationRequest_Kind() {}
+
+func (*RegistrationRequest_Cluster_) isRegistrationRequest_Kind() {}
+
+type GroupInvite struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The group UIDP under which this invite resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // expiration, timestamp this invite becomes no longer valid.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
+ // key_id is used to identify the verification key for this code.
+ KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
+ // role is the role the invited identity will be role-bound to the group with.
+ Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+ // code is the json-encoded authentication code.
+ Code string `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"`
+}
+
+func (x *GroupInvite) Reset() {
+ *x = GroupInvite{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupInvite) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupInvite) ProtoMessage() {}
+
+func (x *GroupInvite) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupInvite.ProtoReflect.Descriptor instead.
+func (*GroupInvite) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *GroupInvite) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *GroupInvite) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+func (x *GroupInvite) GetKeyId() string {
+ if x != nil {
+ return x.KeyId
+ }
+ return ""
+}
+
+func (x *GroupInvite) GetRole() *Role {
+ if x != nil {
+ return x.Role
+ }
+ return nil
+}
+
+func (x *GroupInvite) GetCode() string {
+ if x != nil {
+ return x.Code
+ }
+ return ""
+}
+
+type StoredGroupInvite struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The group UIDP under which this invite resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // expiration, timestamp this invite becomes no longer valid.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
+ // key_id is used to identify the verification key for this code.
+ KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
+ // role is the role the invited identity will be role-bound to the group with.
+ Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *StoredGroupInvite) Reset() {
+ *x = StoredGroupInvite{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *StoredGroupInvite) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StoredGroupInvite) ProtoMessage() {}
+
+func (x *StoredGroupInvite) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use StoredGroupInvite.ProtoReflect.Descriptor instead.
+func (*StoredGroupInvite) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *StoredGroupInvite) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *StoredGroupInvite) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+func (x *StoredGroupInvite) GetKeyId() string {
+ if x != nil {
+ return x.KeyId
+ }
+ return ""
+}
+
+func (x *StoredGroupInvite) GetRole() *Role {
+ if x != nil {
+ return x.Role
+ }
+ return nil
+}
+
+type GroupInviteList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*StoredGroupInvite `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *GroupInviteList) Reset() {
+ *x = GroupInviteList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupInviteList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupInviteList) ProtoMessage() {}
+
+func (x *GroupInviteList) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupInviteList.ProtoReflect.Descriptor instead.
+func (*GroupInviteList) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GroupInviteList) GetItems() []*StoredGroupInvite {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type GroupInviteRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group, The Group UIDP path under which the new group Invite targets.
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ // expiration, timestamp this invite becomes no longer valid.
+ Ttl *durationpb.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
+ // role is the Role UIDP the invited identity will be role-bound to the group with.
+ Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
+ // email is the exact email address that may accept this invite code, if specified.
+ Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"`
+}
+
+func (x *GroupInviteRequest) Reset() {
+ *x = GroupInviteRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupInviteRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupInviteRequest) ProtoMessage() {}
+
+func (x *GroupInviteRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupInviteRequest.ProtoReflect.Descriptor instead.
+func (*GroupInviteRequest) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *GroupInviteRequest) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *GroupInviteRequest) GetTtl() *durationpb.Duration {
+ if x != nil {
+ return x.Ttl
+ }
+ return nil
+}
+
+func (x *GroupInviteRequest) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+func (x *GroupInviteRequest) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+type DeleteGroupInviteRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteGroupInviteRequest) Reset() {
+ *x = DeleteGroupInviteRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteGroupInviteRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteGroupInviteRequest) ProtoMessage() {}
+
+func (x *DeleteGroupInviteRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteGroupInviteRequest.ProtoReflect.Descriptor instead.
+func (*DeleteGroupInviteRequest) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *DeleteGroupInviteRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type GroupInviteFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // group is used to identify the group this record is rooted under.
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ // key_id is the identify the verification key for this code.
+ KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
+}
+
+func (x *GroupInviteFilter) Reset() {
+ *x = GroupInviteFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupInviteFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupInviteFilter) ProtoMessage() {}
+
+func (x *GroupInviteFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupInviteFilter.ProtoReflect.Descriptor instead.
+func (*GroupInviteFilter) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *GroupInviteFilter) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *GroupInviteFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *GroupInviteFilter) GetKeyId() string {
+ if x != nil {
+ return x.KeyId
+ }
+ return ""
+}
+
+type RegistrationRequest_Human struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // code is the json-encoded authentication code.
+ // +optional
+ Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
+}
+
+func (x *RegistrationRequest_Human) Reset() {
+ *x = RegistrationRequest_Human{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RegistrationRequest_Human) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RegistrationRequest_Human) ProtoMessage() {}
+
+func (x *RegistrationRequest_Human) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RegistrationRequest_Human.ProtoReflect.Descriptor instead.
+func (*RegistrationRequest_Human) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *RegistrationRequest_Human) GetCode() string {
+ if x != nil {
+ return x.Code
+ }
+ return ""
+}
+
+type RegistrationRequest_Cluster struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // code is the json-encoded authentication code.
+ Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
+ // cluster_id is an optional cluster id if registering a cluster.
+ ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+}
+
+func (x *RegistrationRequest_Cluster) Reset() {
+ *x = RegistrationRequest_Cluster{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_group_invites_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RegistrationRequest_Cluster) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RegistrationRequest_Cluster) ProtoMessage() {}
+
+func (x *RegistrationRequest_Cluster) ProtoReflect() protoreflect.Message {
+ mi := &file_group_invites_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RegistrationRequest_Cluster.ProtoReflect.Descriptor instead.
+func (*RegistrationRequest_Cluster) Descriptor() ([]byte, []int) {
+ return file_group_invites_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *RegistrationRequest_Cluster) GetCode() string {
+ if x != nil {
+ return x.Code
+ }
+ return ""
+}
+
+func (x *RegistrationRequest_Cluster) GetClusterId() string {
+ if x != nil {
+ return x.ClusterId
+ }
+ return ""
+}
+
+var File_group_invites_platform_proto protoreflect.FileDescriptor
+
+var file_group_invites_platform_proto_rawDesc = []byte{
+ 0x0a, 0x1c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x02, 0x0a, 0x13, 0x52,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
+ 0x48, 0x75, 0x6d, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x50,
+ 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x1a, 0x1b, 0x0a, 0x05, 0x48, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x1a, 0x3c, 0x0a,
+ 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xa9, 0x01,
+ 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x89,
+ 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c,
+ 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50,
+ 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79,
+ 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64,
+ 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22,
+ 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39,
+ 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
+ 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22,
+ 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10,
+ 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74,
+ 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
+ 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01,
+ 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
+ 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_group_invites_platform_proto_rawDescOnce sync.Once
+ file_group_invites_platform_proto_rawDescData = file_group_invites_platform_proto_rawDesc
+)
+
+func file_group_invites_platform_proto_rawDescGZIP() []byte {
+ file_group_invites_platform_proto_rawDescOnce.Do(func() {
+ file_group_invites_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_invites_platform_proto_rawDescData)
+ })
+ return file_group_invites_platform_proto_rawDescData
+}
+
+var file_group_invites_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_group_invites_platform_proto_goTypes = []interface{}{
+ (*RegistrationRequest)(nil), // 0: chainguard.platform.iam.RegistrationRequest
+ (*GroupInvite)(nil), // 1: chainguard.platform.iam.GroupInvite
+ (*StoredGroupInvite)(nil), // 2: chainguard.platform.iam.StoredGroupInvite
+ (*GroupInviteList)(nil), // 3: chainguard.platform.iam.GroupInviteList
+ (*GroupInviteRequest)(nil), // 4: chainguard.platform.iam.GroupInviteRequest
+ (*DeleteGroupInviteRequest)(nil), // 5: chainguard.platform.iam.DeleteGroupInviteRequest
+ (*GroupInviteFilter)(nil), // 6: chainguard.platform.iam.GroupInviteFilter
+ (*RegistrationRequest_Human)(nil), // 7: chainguard.platform.iam.RegistrationRequest.Human
+ (*RegistrationRequest_Cluster)(nil), // 8: chainguard.platform.iam.RegistrationRequest.Cluster
+ (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
+ (*Role)(nil), // 10: chainguard.platform.iam.Role
+ (*durationpb.Duration)(nil), // 11: google.protobuf.Duration
+ (*emptypb.Empty)(nil), // 12: google.protobuf.Empty
+}
+var file_group_invites_platform_proto_depIdxs = []int32{
+ 7, // 0: chainguard.platform.iam.RegistrationRequest.human:type_name -> chainguard.platform.iam.RegistrationRequest.Human
+ 8, // 1: chainguard.platform.iam.RegistrationRequest.cluster:type_name -> chainguard.platform.iam.RegistrationRequest.Cluster
+ 9, // 2: chainguard.platform.iam.GroupInvite.expiration:type_name -> google.protobuf.Timestamp
+ 10, // 3: chainguard.platform.iam.GroupInvite.role:type_name -> chainguard.platform.iam.Role
+ 9, // 4: chainguard.platform.iam.StoredGroupInvite.expiration:type_name -> google.protobuf.Timestamp
+ 10, // 5: chainguard.platform.iam.StoredGroupInvite.role:type_name -> chainguard.platform.iam.Role
+ 2, // 6: chainguard.platform.iam.GroupInviteList.items:type_name -> chainguard.platform.iam.StoredGroupInvite
+ 11, // 7: chainguard.platform.iam.GroupInviteRequest.ttl:type_name -> google.protobuf.Duration
+ 4, // 8: chainguard.platform.iam.GroupInvites.Create:input_type -> chainguard.platform.iam.GroupInviteRequest
+ 4, // 9: chainguard.platform.iam.GroupInvites.CreateWithGroup:input_type -> chainguard.platform.iam.GroupInviteRequest
+ 6, // 10: chainguard.platform.iam.GroupInvites.List:input_type -> chainguard.platform.iam.GroupInviteFilter
+ 5, // 11: chainguard.platform.iam.GroupInvites.Delete:input_type -> chainguard.platform.iam.DeleteGroupInviteRequest
+ 1, // 12: chainguard.platform.iam.GroupInvites.Create:output_type -> chainguard.platform.iam.GroupInvite
+ 1, // 13: chainguard.platform.iam.GroupInvites.CreateWithGroup:output_type -> chainguard.platform.iam.GroupInvite
+ 3, // 14: chainguard.platform.iam.GroupInvites.List:output_type -> chainguard.platform.iam.GroupInviteList
+ 12, // 15: chainguard.platform.iam.GroupInvites.Delete:output_type -> google.protobuf.Empty
+ 12, // [12:16] is the sub-list for method output_type
+ 8, // [8:12] 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_group_invites_platform_proto_init() }
+func file_group_invites_platform_proto_init() {
+ if File_group_invites_platform_proto != nil {
+ return
+ }
+ file_role_platform_proto_init()
+ if !protoimpl.UnsafeEnabled {
+ file_group_invites_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RegistrationRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupInvite); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StoredGroupInvite); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupInviteList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupInviteRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteGroupInviteRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupInviteFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RegistrationRequest_Human); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RegistrationRequest_Cluster); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_group_invites_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*RegistrationRequest_Human_)(nil),
+ (*RegistrationRequest_Cluster_)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_group_invites_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 9,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_group_invites_platform_proto_goTypes,
+ DependencyIndexes: file_group_invites_platform_proto_depIdxs,
+ MessageInfos: file_group_invites_platform_proto_msgTypes,
+ }.Build()
+ File_group_invites_platform_proto = out.File
+ file_group_invites_platform_proto_rawDesc = nil
+ file_group_invites_platform_proto_goTypes = nil
+ file_group_invites_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.gw.go b/proto/platform/iam/v1/group_invites.platform.pb.gw.go
new file mode 100644
index 00000000..d1994fca
--- /dev/null
+++ b/proto/platform/iam/v1/group_invites.platform.pb.gw.go
@@ -0,0 +1,472 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: group_invites.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_GroupInvites_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupInvites_Create_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["group"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "group")
+ }
+
+ protoReq.Group, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "group", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_GroupInvites_CreateWithGroup_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.CreateWithGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupInvites_CreateWithGroup_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.CreateWithGroup(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_GroupInvites_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_GroupInvites_List_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupInvites_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupInvites_List_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq GroupInviteFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GroupInvites_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_GroupInvites_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client GroupInvitesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteGroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_GroupInvites_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server GroupInvitesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteGroupInviteRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterGroupInvitesHandlerServer registers the http handlers for service GroupInvites to "mux".
+// UnaryRPC :call GroupInvitesServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterGroupInvitesHandlerFromEndpoint instead.
+func RegisterGroupInvitesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GroupInvitesServer) error {
+
+ mux.Handle("POST", pattern_GroupInvites_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Create", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupInvites_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_GroupInvites_CreateWithGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/CreateWithGroup", runtime.WithHTTPPathPattern("/chainguard.platform.iam.GroupInvites/CreateWithGroup"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupInvites_CreateWithGroup_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_CreateWithGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_GroupInvites_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/List", runtime.WithHTTPPathPattern("/iam/v1/group_invites"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupInvites_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_GroupInvites_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Delete", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_GroupInvites_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterGroupInvitesHandlerFromEndpoint is same as RegisterGroupInvitesHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterGroupInvitesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterGroupInvitesHandler(ctx, mux, conn)
+}
+
+// RegisterGroupInvitesHandler registers the http handlers for service GroupInvites to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterGroupInvitesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterGroupInvitesHandlerClient(ctx, mux, NewGroupInvitesClient(conn))
+}
+
+// RegisterGroupInvitesHandlerClient registers the http handlers for service GroupInvites
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GroupInvitesClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GroupInvitesClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "GroupInvitesClient" to call the correct interceptors.
+func RegisterGroupInvitesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GroupInvitesClient) error {
+
+ mux.Handle("POST", pattern_GroupInvites_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Create", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{group=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupInvites_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_GroupInvites_CreateWithGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/CreateWithGroup", runtime.WithHTTPPathPattern("/chainguard.platform.iam.GroupInvites/CreateWithGroup"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupInvites_CreateWithGroup_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_CreateWithGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_GroupInvites_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/List", runtime.WithHTTPPathPattern("/iam/v1/group_invites"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupInvites_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_GroupInvites_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.GroupInvites/Delete", runtime.WithHTTPPathPattern("/iam/v1/group_invites/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_GroupInvites_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_GroupInvites_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_GroupInvites_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "group_invites", "group"}, ""))
+
+ pattern_GroupInvites_CreateWithGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.iam.GroupInvites", "CreateWithGroup"}, ""))
+
+ pattern_GroupInvites_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "group_invites"}, ""))
+
+ pattern_GroupInvites_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "group_invites", "id"}, ""))
+)
+
+var (
+ forward_GroupInvites_Create_0 = runtime.ForwardResponseMessage
+
+ forward_GroupInvites_CreateWithGroup_0 = runtime.ForwardResponseMessage
+
+ forward_GroupInvites_List_0 = runtime.ForwardResponseMessage
+
+ forward_GroupInvites_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/group_invites.platform.proto b/proto/platform/iam/v1/group_invites.platform.proto
new file mode 100644
index 00000000..f3234539
--- /dev/null
+++ b/proto/platform/iam/v1/group_invites.platform.proto
@@ -0,0 +1,165 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMGroupInviteProto";
+
+package chainguard.platform.iam;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "role.platform.proto";
+
+service GroupInvites {
+ rpc Create(GroupInviteRequest) returns (GroupInvite) {
+ option (google.api.http) = {
+ post: "/iam/v1/group_invites/{group=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ CAP_IAM_GROUP_INVITES_CREATE,
+ // Creating a Group Invite is effectively a RoleBinding
+ // promise, so check that the caller has permission to
+ // create RoleBindings as well.
+ CAP_IAM_ROLE_BINDINGS_CREATE
+ ]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.group_invite.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ // CreateWithGroup is an internal API for creating a new root group
+ // where the caller is NOT added as an Owner, but an invite code to
+ // become the owner of the group is returned. This is not intended
+ // for external consumption, and will not be supported.
+ // Do not use this!
+ rpc CreateWithGroup(GroupInviteRequest) returns (GroupInvite) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ CAP_IAM_GROUP_INVITES_CREATE,
+ // Creating a Group Invite is effectively a RoleBinding
+ // promise, so check that the caller has permission to
+ // create RoleBindings as well.
+ CAP_IAM_ROLE_BINDINGS_CREATE
+ ]
+ // We check for the capabilities above in the token, but
+ // this method has special undocumented authentication
+ // semantics since it is not intended to external consumption.
+ unscoped: true
+ }
+ };
+ }
+
+ rpc List(GroupInviteFilter) returns (GroupInviteList) {
+ option (google.api.http) = {
+ get: "/iam/v1/group_invites"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUP_INVITES_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteGroupInviteRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/group_invites/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_GROUP_INVITES_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.group_invite.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message RegistrationRequest {
+ oneof kind {
+ Human human = 1;
+ Cluster cluster = 2;
+ }
+
+ message Human {
+ // code is the json-encoded authentication code.
+ // +optional
+ string code = 1;
+ }
+
+ message Cluster {
+ // code is the json-encoded authentication code.
+ string code = 1;
+ // cluster_id is an optional cluster id if registering a cluster.
+ string cluster_id = 2;
+ }
+}
+
+message GroupInvite {
+ // id, The group UIDP under which this invite resides.
+ string id = 1;
+ // expiration, timestamp this invite becomes no longer valid.
+ google.protobuf.Timestamp expiration = 2;
+ // key_id is used to identify the verification key for this code.
+ string key_id = 3;
+ // role is the role the invited identity will be role-bound to the group with.
+ chainguard.platform.iam.Role role = 4;
+ // code is the json-encoded authentication code.
+ string code = 5;
+}
+
+message StoredGroupInvite {
+ // id, The group UIDP under which this invite resides.
+ string id = 1;
+ // expiration, timestamp this invite becomes no longer valid.
+ google.protobuf.Timestamp expiration = 2;
+ // key_id is used to identify the verification key for this code.
+ string key_id = 3;
+ // role is the role the invited identity will be role-bound to the group with.
+ chainguard.platform.iam.Role role = 4;
+}
+
+message GroupInviteList {
+ repeated StoredGroupInvite items = 1;
+}
+
+message GroupInviteRequest {
+ // group, The Group UIDP path under which the new group Invite targets.
+ string group = 1 [(chainguard.annotations.iam_scope) = true];
+ // expiration, timestamp this invite becomes no longer valid.
+ google.protobuf.Duration ttl = 2;
+ // role is the Role UIDP the invited identity will be role-bound to the group with.
+ string role = 3;
+ // email is the exact email address that may accept this invite code, if specified.
+ string email = 4;
+}
+
+message DeleteGroupInviteRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message GroupInviteFilter {
+ // group is used to identify the group this record is rooted under.
+ string group = 1;
+ // id is the exact UID of the record.
+ string id = 2;
+ // key_id is the identify the verification key for this code.
+ string key_id = 3;
+}
diff --git a/proto/platform/iam/v1/group_invites.platform_grpc.pb.go b/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
new file mode 100644
index 00000000..13dcbff8
--- /dev/null
+++ b/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
@@ -0,0 +1,231 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: group_invites.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ GroupInvites_Create_FullMethodName = "/chainguard.platform.iam.GroupInvites/Create"
+ GroupInvites_CreateWithGroup_FullMethodName = "/chainguard.platform.iam.GroupInvites/CreateWithGroup"
+ GroupInvites_List_FullMethodName = "/chainguard.platform.iam.GroupInvites/List"
+ GroupInvites_Delete_FullMethodName = "/chainguard.platform.iam.GroupInvites/Delete"
+)
+
+// GroupInvitesClient is the client API for GroupInvites service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type GroupInvitesClient interface {
+ Create(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error)
+ // CreateWithGroup is an internal API for creating a new root group
+ // where the caller is NOT added as an Owner, but an invite code to
+ // become the owner of the group is returned. This is not intended
+ // for external consumption, and will not be supported.
+ // Do not use this!
+ CreateWithGroup(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error)
+ List(ctx context.Context, in *GroupInviteFilter, opts ...grpc.CallOption) (*GroupInviteList, error)
+ Delete(ctx context.Context, in *DeleteGroupInviteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type groupInvitesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewGroupInvitesClient(cc grpc.ClientConnInterface) GroupInvitesClient {
+ return &groupInvitesClient{cc}
+}
+
+func (c *groupInvitesClient) Create(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error) {
+ out := new(GroupInvite)
+ err := c.cc.Invoke(ctx, GroupInvites_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupInvitesClient) CreateWithGroup(ctx context.Context, in *GroupInviteRequest, opts ...grpc.CallOption) (*GroupInvite, error) {
+ out := new(GroupInvite)
+ err := c.cc.Invoke(ctx, GroupInvites_CreateWithGroup_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupInvitesClient) List(ctx context.Context, in *GroupInviteFilter, opts ...grpc.CallOption) (*GroupInviteList, error) {
+ out := new(GroupInviteList)
+ err := c.cc.Invoke(ctx, GroupInvites_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *groupInvitesClient) Delete(ctx context.Context, in *DeleteGroupInviteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, GroupInvites_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// GroupInvitesServer is the server API for GroupInvites service.
+// All implementations must embed UnimplementedGroupInvitesServer
+// for forward compatibility
+type GroupInvitesServer interface {
+ Create(context.Context, *GroupInviteRequest) (*GroupInvite, error)
+ // CreateWithGroup is an internal API for creating a new root group
+ // where the caller is NOT added as an Owner, but an invite code to
+ // become the owner of the group is returned. This is not intended
+ // for external consumption, and will not be supported.
+ // Do not use this!
+ CreateWithGroup(context.Context, *GroupInviteRequest) (*GroupInvite, error)
+ List(context.Context, *GroupInviteFilter) (*GroupInviteList, error)
+ Delete(context.Context, *DeleteGroupInviteRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedGroupInvitesServer()
+}
+
+// UnimplementedGroupInvitesServer must be embedded to have forward compatible implementations.
+type UnimplementedGroupInvitesServer struct {
+}
+
+func (UnimplementedGroupInvitesServer) Create(context.Context, *GroupInviteRequest) (*GroupInvite, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedGroupInvitesServer) CreateWithGroup(context.Context, *GroupInviteRequest) (*GroupInvite, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateWithGroup not implemented")
+}
+func (UnimplementedGroupInvitesServer) List(context.Context, *GroupInviteFilter) (*GroupInviteList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedGroupInvitesServer) Delete(context.Context, *DeleteGroupInviteRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedGroupInvitesServer) mustEmbedUnimplementedGroupInvitesServer() {}
+
+// UnsafeGroupInvitesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to GroupInvitesServer will
+// result in compilation errors.
+type UnsafeGroupInvitesServer interface {
+ mustEmbedUnimplementedGroupInvitesServer()
+}
+
+func RegisterGroupInvitesServer(s grpc.ServiceRegistrar, srv GroupInvitesServer) {
+ s.RegisterService(&GroupInvites_ServiceDesc, srv)
+}
+
+func _GroupInvites_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GroupInviteRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupInvitesServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupInvites_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupInvitesServer).Create(ctx, req.(*GroupInviteRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupInvites_CreateWithGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GroupInviteRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupInvitesServer).CreateWithGroup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupInvites_CreateWithGroup_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupInvitesServer).CreateWithGroup(ctx, req.(*GroupInviteRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupInvites_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GroupInviteFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupInvitesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupInvites_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupInvitesServer).List(ctx, req.(*GroupInviteFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GroupInvites_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteGroupInviteRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GroupInvitesServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: GroupInvites_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GroupInvitesServer).Delete(ctx, req.(*DeleteGroupInviteRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// GroupInvites_ServiceDesc is the grpc.ServiceDesc for GroupInvites service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var GroupInvites_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.GroupInvites",
+ HandlerType: (*GroupInvitesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _GroupInvites_Create_Handler,
+ },
+ {
+ MethodName: "CreateWithGroup",
+ Handler: _GroupInvites_CreateWithGroup_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _GroupInvites_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _GroupInvites_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "group_invites.platform.proto",
+}
diff --git a/proto/platform/iam/v1/identity.platform.event.go b/proto/platform/iam/v1/identity.platform.event.go
new file mode 100644
index 00000000..12152a4d
--- /dev/null
+++ b/proto/platform/iam/v1/identity.platform.event.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Identity) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Identity) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteIdentityRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteIdentityRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/identity.platform.pb.go b/proto/platform/iam/v1/identity.platform.pb.go
new file mode 100644
index 00000000..94d24e99
--- /dev/null
+++ b/proto/platform/iam/v1/identity.platform.pb.go
@@ -0,0 +1,1357 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: identity.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type ServicePrincipal int32
+
+const (
+ ServicePrincipal_UNKNOWN ServicePrincipal = 0
+ ServicePrincipal_COSIGNED ServicePrincipal = 1
+ ServicePrincipal_INGESTER ServicePrincipal = 2
+ ServicePrincipal_CATALOG_SYNCER ServicePrincipal = 3
+)
+
+// Enum value maps for ServicePrincipal.
+var (
+ ServicePrincipal_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "COSIGNED",
+ 2: "INGESTER",
+ 3: "CATALOG_SYNCER",
+ }
+ ServicePrincipal_value = map[string]int32{
+ "UNKNOWN": 0,
+ "COSIGNED": 1,
+ "INGESTER": 2,
+ "CATALOG_SYNCER": 3,
+ }
+)
+
+func (x ServicePrincipal) Enum() *ServicePrincipal {
+ p := new(ServicePrincipal)
+ *p = x
+ return p
+}
+
+func (x ServicePrincipal) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ServicePrincipal) Descriptor() protoreflect.EnumDescriptor {
+ return file_identity_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (ServicePrincipal) Type() protoreflect.EnumType {
+ return &file_identity_platform_proto_enumTypes[0]
+}
+
+func (x ServicePrincipal) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ServicePrincipal.Descriptor instead.
+func (ServicePrincipal) EnumDescriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{0}
+}
+
+type Identity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is unique identifier of this specific identity.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human readable name of identity.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human readable of identity.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // created_at is the timestamp for when the identity was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // updated_at is the timestamp for when the identity was last updated.
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // relationship is used to describe how this identity relates to
+ // identities coming from 3rd party Identity Providers (IdPs)
+ //
+ // Types that are assignable to Relationship:
+ //
+ // *Identity_ClaimMatch_
+ // *Identity_Static
+ // *Identity_ServicePrincipal
+ // *Identity_AwsIdentity
+ Relationship isIdentity_Relationship `protobuf_oneof:"relationship"`
+}
+
+func (x *Identity) Reset() {
+ *x = Identity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity) ProtoMessage() {}
+
+func (x *Identity) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
+func (*Identity) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Identity) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Identity) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Identity) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Identity) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *Identity) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (m *Identity) GetRelationship() isIdentity_Relationship {
+ if m != nil {
+ return m.Relationship
+ }
+ return nil
+}
+
+func (x *Identity) GetClaimMatch() *Identity_ClaimMatch {
+ if x, ok := x.GetRelationship().(*Identity_ClaimMatch_); ok {
+ return x.ClaimMatch
+ }
+ return nil
+}
+
+func (x *Identity) GetStatic() *Identity_StaticKeys {
+ if x, ok := x.GetRelationship().(*Identity_Static); ok {
+ return x.Static
+ }
+ return nil
+}
+
+func (x *Identity) GetServicePrincipal() ServicePrincipal {
+ if x, ok := x.GetRelationship().(*Identity_ServicePrincipal); ok {
+ return x.ServicePrincipal
+ }
+ return ServicePrincipal_UNKNOWN
+}
+
+func (x *Identity) GetAwsIdentity() *Identity_AWSIdentity {
+ if x, ok := x.GetRelationship().(*Identity_AwsIdentity); ok {
+ return x.AwsIdentity
+ }
+ return nil
+}
+
+type isIdentity_Relationship interface {
+ isIdentity_Relationship()
+}
+
+type Identity_ClaimMatch_ struct {
+ // claim_match checks the third party IdP token's claims against one
+ // or more configured patterns.
+ ClaimMatch *Identity_ClaimMatch `protobuf:"bytes,10,opt,name=claim_match,json=claimMatch,proto3,oneof"`
+}
+
+type Identity_Static struct {
+ // static is equivalent to literal, but instead of discovering the
+ // IdP's verification keys we verify the identity using pre-registered
+ // verification keys. This is intended for use with identities from
+ // providers without an "online" issuer (network accessible to our IdP),
+ // such as a KinD/minikube cluster.
+ // NOTE: because this path does not have a mechanism for key rotation
+ // the identity will expire, with a maximum lifetime of 30d.
+ Static *Identity_StaticKeys `protobuf:"bytes,11,opt,name=static,proto3,oneof"`
+}
+
+type Identity_ServicePrincipal struct {
+ // service_principal is the name of the Chainguard service that is
+ // allowed to assume this identity. These names correlate with the
+ // service names used in impersonation with account associations.
+ ServicePrincipal ServicePrincipal `protobuf:"varint,12,opt,name=service_principal,json=servicePrincipal,proto3,enum=chainguard.platform.iam.ServicePrincipal,oneof"`
+}
+
+type Identity_AwsIdentity struct {
+ // aws_identity matches AWS IAM users and roles to an identity
+ AwsIdentity *Identity_AWSIdentity `protobuf:"bytes,13,opt,name=aws_identity,json=awsIdentity,proto3,oneof"`
+}
+
+func (*Identity_ClaimMatch_) isIdentity_Relationship() {}
+
+func (*Identity_Static) isIdentity_Relationship() {}
+
+func (*Identity_ServicePrincipal) isIdentity_Relationship() {}
+
+func (*Identity_AwsIdentity) isIdentity_Relationship() {}
+
+type CreateIdentityRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group UIDP path under which the new Identity resides.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Identity to create.
+ Identity *Identity `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
+}
+
+func (x *CreateIdentityRequest) Reset() {
+ *x = CreateIdentityRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateIdentityRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateIdentityRequest) ProtoMessage() {}
+
+func (x *CreateIdentityRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateIdentityRequest.ProtoReflect.Descriptor instead.
+func (*CreateIdentityRequest) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CreateIdentityRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateIdentityRequest) GetIdentity() *Identity {
+ if x != nil {
+ return x.Identity
+ }
+ return nil
+}
+
+type DeleteIdentityRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ID, UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteIdentityRequest) Reset() {
+ *x = DeleteIdentityRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteIdentityRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteIdentityRequest) ProtoMessage() {}
+
+func (x *DeleteIdentityRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteIdentityRequest.ProtoReflect.Descriptor instead.
+func (*DeleteIdentityRequest) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *DeleteIdentityRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type IdentityList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Identity `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *IdentityList) Reset() {
+ *x = IdentityList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityList) ProtoMessage() {}
+
+func (x *IdentityList) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityList.ProtoReflect.Descriptor instead.
+func (*IdentityList) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *IdentityList) GetItems() []*Identity {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type IdentityFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // id is unique identifier to look up.
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *IdentityFilter) Reset() {
+ *x = IdentityFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityFilter) ProtoMessage() {}
+
+func (x *IdentityFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityFilter.ProtoReflect.Descriptor instead.
+func (*IdentityFilter) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *IdentityFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *IdentityFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type LookupRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // issuer is the oidc issuer to look up.
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ // subject is the subject to look up.
+ Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
+}
+
+func (x *LookupRequest) Reset() {
+ *x = LookupRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *LookupRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LookupRequest) ProtoMessage() {}
+
+func (x *LookupRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LookupRequest.ProtoReflect.Descriptor instead.
+func (*LookupRequest) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *LookupRequest) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *LookupRequest) GetSubject() string {
+ if x != nil {
+ return x.Subject
+ }
+ return ""
+}
+
+type Identity_ClaimMatch struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required, matches the `iss` claim.
+ //
+ // Types that are assignable to Iss:
+ //
+ // *Identity_ClaimMatch_Issuer
+ // *Identity_ClaimMatch_IssuerPattern
+ Iss isIdentity_ClaimMatch_Iss `protobuf_oneof:"iss"`
+ // Required, matches the `sub` claim.
+ //
+ // Types that are assignable to Sub:
+ //
+ // *Identity_ClaimMatch_Subject
+ // *Identity_ClaimMatch_SubjectPattern
+ Sub isIdentity_ClaimMatch_Sub `protobuf_oneof:"sub"`
+ // Optional, matches the `aud` claim.
+ // When unspecified, this defaults to the hostname of the SaaS
+ // environment's issuer.
+ //
+ // Types that are assignable to Aud:
+ //
+ // *Identity_ClaimMatch_Audience
+ // *Identity_ClaimMatch_AudiencePattern
+ Aud isIdentity_ClaimMatch_Aud `protobuf_oneof:"aud"`
+ // claims is a mapping from the name of a custom claim
+ // to a literal matching that claim's value.
+ Claims map[string]string `protobuf:"bytes,7,rep,name=claims,proto3" json:"claims,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // claim_patterns is a mapping from the name of a custom claim
+ // to a regular expression for matching that claim's value.
+ ClaimPatterns map[string]string `protobuf:"bytes,8,rep,name=claim_patterns,json=claimPatterns,proto3" json:"claim_patterns,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *Identity_ClaimMatch) Reset() {
+ *x = Identity_ClaimMatch{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity_ClaimMatch) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity_ClaimMatch) ProtoMessage() {}
+
+func (x *Identity_ClaimMatch) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity_ClaimMatch.ProtoReflect.Descriptor instead.
+func (*Identity_ClaimMatch) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (m *Identity_ClaimMatch) GetIss() isIdentity_ClaimMatch_Iss {
+ if m != nil {
+ return m.Iss
+ }
+ return nil
+}
+
+func (x *Identity_ClaimMatch) GetIssuer() string {
+ if x, ok := x.GetIss().(*Identity_ClaimMatch_Issuer); ok {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *Identity_ClaimMatch) GetIssuerPattern() string {
+ if x, ok := x.GetIss().(*Identity_ClaimMatch_IssuerPattern); ok {
+ return x.IssuerPattern
+ }
+ return ""
+}
+
+func (m *Identity_ClaimMatch) GetSub() isIdentity_ClaimMatch_Sub {
+ if m != nil {
+ return m.Sub
+ }
+ return nil
+}
+
+func (x *Identity_ClaimMatch) GetSubject() string {
+ if x, ok := x.GetSub().(*Identity_ClaimMatch_Subject); ok {
+ return x.Subject
+ }
+ return ""
+}
+
+func (x *Identity_ClaimMatch) GetSubjectPattern() string {
+ if x, ok := x.GetSub().(*Identity_ClaimMatch_SubjectPattern); ok {
+ return x.SubjectPattern
+ }
+ return ""
+}
+
+func (m *Identity_ClaimMatch) GetAud() isIdentity_ClaimMatch_Aud {
+ if m != nil {
+ return m.Aud
+ }
+ return nil
+}
+
+func (x *Identity_ClaimMatch) GetAudience() string {
+ if x, ok := x.GetAud().(*Identity_ClaimMatch_Audience); ok {
+ return x.Audience
+ }
+ return ""
+}
+
+func (x *Identity_ClaimMatch) GetAudiencePattern() string {
+ if x, ok := x.GetAud().(*Identity_ClaimMatch_AudiencePattern); ok {
+ return x.AudiencePattern
+ }
+ return ""
+}
+
+func (x *Identity_ClaimMatch) GetClaims() map[string]string {
+ if x != nil {
+ return x.Claims
+ }
+ return nil
+}
+
+func (x *Identity_ClaimMatch) GetClaimPatterns() map[string]string {
+ if x != nil {
+ return x.ClaimPatterns
+ }
+ return nil
+}
+
+type isIdentity_ClaimMatch_Iss interface {
+ isIdentity_ClaimMatch_Iss()
+}
+
+type Identity_ClaimMatch_Issuer struct {
+ // issuer of the OIDC ID tokens issued for this identity.
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3,oneof"`
+}
+
+type Identity_ClaimMatch_IssuerPattern struct {
+ // issuer_pattern is a regular expression for matching the
+ // token's issuer claim.
+ IssuerPattern string `protobuf:"bytes,2,opt,name=issuer_pattern,json=issuerPattern,proto3,oneof"`
+}
+
+func (*Identity_ClaimMatch_Issuer) isIdentity_ClaimMatch_Iss() {}
+
+func (*Identity_ClaimMatch_IssuerPattern) isIdentity_ClaimMatch_Iss() {}
+
+type isIdentity_ClaimMatch_Sub interface {
+ isIdentity_ClaimMatch_Sub()
+}
+
+type Identity_ClaimMatch_Subject struct {
+ // subject of OIDC ID tokens issued for this identity.
+ Subject string `protobuf:"bytes,3,opt,name=subject,proto3,oneof"`
+}
+
+type Identity_ClaimMatch_SubjectPattern struct {
+ // subject_pattern is a regular expression for matching the
+ // token's subject claim.
+ SubjectPattern string `protobuf:"bytes,4,opt,name=subject_pattern,json=subjectPattern,proto3,oneof"`
+}
+
+func (*Identity_ClaimMatch_Subject) isIdentity_ClaimMatch_Sub() {}
+
+func (*Identity_ClaimMatch_SubjectPattern) isIdentity_ClaimMatch_Sub() {}
+
+type isIdentity_ClaimMatch_Aud interface {
+ isIdentity_ClaimMatch_Aud()
+}
+
+type Identity_ClaimMatch_Audience struct {
+ // audience of OIDC ID tokens issued for this identity.
+ Audience string `protobuf:"bytes,5,opt,name=audience,proto3,oneof"`
+}
+
+type Identity_ClaimMatch_AudiencePattern struct {
+ // audience_pattern is a regular expression for matching the
+ // token's audience claim.
+ AudiencePattern string `protobuf:"bytes,6,opt,name=audience_pattern,json=audiencePattern,proto3,oneof"`
+}
+
+func (*Identity_ClaimMatch_Audience) isIdentity_ClaimMatch_Aud() {}
+
+func (*Identity_ClaimMatch_AudiencePattern) isIdentity_ClaimMatch_Aud() {}
+
+type Identity_StaticKeys struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // issuer of the OIDC ID tokens issued for this identity.
+ // Matches the `iss` claim.
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ // subject of OIDC ID tokens issued for this identity.
+ // Matches the `sub` claim.
+ Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
+ // issuer_keys is JWKS-formatted public keys for the issuer.
+ // Required, otherwise use Literal.
+ IssuerKeys string `protobuf:"bytes,4,opt,name=issuer_keys,json=issuerKeys,proto3" json:"issuer_keys,omitempty"`
+ // expiration is the time when the issuer_keys will expire.
+ // Defaults to / Maximum of 30 days after creation time.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expiration,proto3" json:"expiration,omitempty"`
+}
+
+func (x *Identity_StaticKeys) Reset() {
+ *x = Identity_StaticKeys{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity_StaticKeys) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity_StaticKeys) ProtoMessage() {}
+
+func (x *Identity_StaticKeys) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity_StaticKeys.ProtoReflect.Descriptor instead.
+func (*Identity_StaticKeys) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *Identity_StaticKeys) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *Identity_StaticKeys) GetSubject() string {
+ if x != nil {
+ return x.Subject
+ }
+ return ""
+}
+
+func (x *Identity_StaticKeys) GetIssuerKeys() string {
+ if x != nil {
+ return x.IssuerKeys
+ }
+ return ""
+}
+
+func (x *Identity_StaticKeys) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
+type Identity_AWSIdentity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required, matches the `Account` field in the GetCallerID AWS IAM
+ // response
+ AwsAccount string `protobuf:"bytes,1,opt,name=aws_account,json=awsAccount,proto3" json:"aws_account,omitempty"`
+ // Required, matches the `Arn` field in the GetCallerID AWS IAM response
+ //
+ // Types that are assignable to AwsArn:
+ //
+ // *Identity_AWSIdentity_Arn
+ // *Identity_AWSIdentity_ArnPattern
+ AwsArn isIdentity_AWSIdentity_AwsArn `protobuf_oneof:"aws_arn"`
+ // Required, matches the `UserId` field of th GetCallerID AWS IAM response
+ //
+ // Types that are assignable to AwsUserId:
+ //
+ // *Identity_AWSIdentity_UserId
+ // *Identity_AWSIdentity_UserIdPattern
+ AwsUserId isIdentity_AWSIdentity_AwsUserId `protobuf_oneof:"aws_user_id"`
+}
+
+func (x *Identity_AWSIdentity) Reset() {
+ *x = Identity_AWSIdentity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Identity_AWSIdentity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity_AWSIdentity) ProtoMessage() {}
+
+func (x *Identity_AWSIdentity) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity_AWSIdentity.ProtoReflect.Descriptor instead.
+func (*Identity_AWSIdentity) Descriptor() ([]byte, []int) {
+ return file_identity_platform_proto_rawDescGZIP(), []int{0, 2}
+}
+
+func (x *Identity_AWSIdentity) GetAwsAccount() string {
+ if x != nil {
+ return x.AwsAccount
+ }
+ return ""
+}
+
+func (m *Identity_AWSIdentity) GetAwsArn() isIdentity_AWSIdentity_AwsArn {
+ if m != nil {
+ return m.AwsArn
+ }
+ return nil
+}
+
+func (x *Identity_AWSIdentity) GetArn() string {
+ if x, ok := x.GetAwsArn().(*Identity_AWSIdentity_Arn); ok {
+ return x.Arn
+ }
+ return ""
+}
+
+func (x *Identity_AWSIdentity) GetArnPattern() string {
+ if x, ok := x.GetAwsArn().(*Identity_AWSIdentity_ArnPattern); ok {
+ return x.ArnPattern
+ }
+ return ""
+}
+
+func (m *Identity_AWSIdentity) GetAwsUserId() isIdentity_AWSIdentity_AwsUserId {
+ if m != nil {
+ return m.AwsUserId
+ }
+ return nil
+}
+
+func (x *Identity_AWSIdentity) GetUserId() string {
+ if x, ok := x.GetAwsUserId().(*Identity_AWSIdentity_UserId); ok {
+ return x.UserId
+ }
+ return ""
+}
+
+func (x *Identity_AWSIdentity) GetUserIdPattern() string {
+ if x, ok := x.GetAwsUserId().(*Identity_AWSIdentity_UserIdPattern); ok {
+ return x.UserIdPattern
+ }
+ return ""
+}
+
+type isIdentity_AWSIdentity_AwsArn interface {
+ isIdentity_AWSIdentity_AwsArn()
+}
+
+type Identity_AWSIdentity_Arn struct {
+ // Exact match to Arn of AWS Identity
+ Arn string `protobuf:"bytes,3,opt,name=arn,proto3,oneof"`
+}
+
+type Identity_AWSIdentity_ArnPattern struct {
+ // Regular expression for matching Arn
+ ArnPattern string `protobuf:"bytes,4,opt,name=arn_pattern,json=arnPattern,proto3,oneof"`
+}
+
+func (*Identity_AWSIdentity_Arn) isIdentity_AWSIdentity_AwsArn() {}
+
+func (*Identity_AWSIdentity_ArnPattern) isIdentity_AWSIdentity_AwsArn() {}
+
+type isIdentity_AWSIdentity_AwsUserId interface {
+ isIdentity_AWSIdentity_AwsUserId()
+}
+
+type Identity_AWSIdentity_UserId struct {
+ // Exacty match of the UserID field
+ UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3,oneof"`
+}
+
+type Identity_AWSIdentity_UserIdPattern struct {
+ // Regular expression for UserId field
+ UserIdPattern string `protobuf:"bytes,6,opt,name=user_id_pattern,json=userIdPattern,proto3,oneof"`
+}
+
+func (*Identity_AWSIdentity_UserId) isIdentity_AWSIdentity_AwsUserId() {}
+
+func (*Identity_AWSIdentity_UserIdPattern) isIdentity_AWSIdentity_AwsUserId() {}
+
+var File_identity_platform_proto protoreflect.FileDescriptor
+
+var file_identity_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xba, 0x0b, 0x0a, 0x08, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
+ 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x63, 0x6c, 0x61,
+ 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x0a,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x63, 0x12, 0x58, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72,
+ 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50,
+ 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x0c,
+ 0x61, 0x77, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x77, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x1a, 0xad, 0x04, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
+ 0x18, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x69, 0x73, 0x73,
+ 0x75, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29,
+ 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1c, 0x0a, 0x08, 0x61, 0x75, 0x64,
+ 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x61,
+ 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x10, 0x61, 0x75, 0x64, 0x69, 0x65,
+ 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x02, 0x52, 0x0f, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x07,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06,
+ 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f,
+ 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x6c, 0x61,
+ 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x0d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x1a, 0x39,
+ 0x0a, 0x0b, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x61,
+ 0x69, 0x6d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x69,
+ 0x73, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x75, 0x64,
+ 0x1a, 0x9b, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12,
+ 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
+ 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x4b, 0x65,
+ 0x79, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xc4,
+ 0x01, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+ 0x12, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03,
+ 0x61, 0x72, 0x6e, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65,
+ 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x6e, 0x50,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x19, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x61, 0x74,
+ 0x74, 0x65, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x75, 0x73,
+ 0x65, 0x72, 0x49, 0x64, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x61,
+ 0x77, 0x73, 0x5f, 0x61, 0x72, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x68, 0x69, 0x70, 0x22, 0x7b, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23,
+ 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
+ 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x0c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c,
+ 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5c, 0x0a, 0x0e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x4c, 0x6f,
+ 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69,
+ 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73,
+ 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2a, 0x4f, 0x0a,
+ 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61,
+ 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c,
+ 0x0a, 0x08, 0x43, 0x4f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08,
+ 0x49, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41,
+ 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x45, 0x52, 0x10, 0x03, 0x32, 0xe9,
+ 0x06, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0xd7, 0x01,
+ 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x2d, 0x22, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x85, 0x07, 0xc2, 0xf0, 0x8e, 0xfc,
+ 0x0b, 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xbc, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f,
+ 0x1a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x86, 0x07, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
+ 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x02, 0x87, 0x07, 0x10, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x06, 0x4c, 0x6f,
+ 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4c,
+ 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22,
+ 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b,
+ 0x75, 0x70, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0x12, 0xbb, 0x01, 0x0a,
+ 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
+ 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x88, 0x07, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6c, 0x0a, 0x22, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31,
+ 0x42, 0x1a, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_identity_platform_proto_rawDescOnce sync.Once
+ file_identity_platform_proto_rawDescData = file_identity_platform_proto_rawDesc
+)
+
+func file_identity_platform_proto_rawDescGZIP() []byte {
+ file_identity_platform_proto_rawDescOnce.Do(func() {
+ file_identity_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identity_platform_proto_rawDescData)
+ })
+ return file_identity_platform_proto_rawDescData
+}
+
+var file_identity_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_identity_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_identity_platform_proto_goTypes = []interface{}{
+ (ServicePrincipal)(0), // 0: chainguard.platform.iam.ServicePrincipal
+ (*Identity)(nil), // 1: chainguard.platform.iam.Identity
+ (*CreateIdentityRequest)(nil), // 2: chainguard.platform.iam.CreateIdentityRequest
+ (*DeleteIdentityRequest)(nil), // 3: chainguard.platform.iam.DeleteIdentityRequest
+ (*IdentityList)(nil), // 4: chainguard.platform.iam.IdentityList
+ (*IdentityFilter)(nil), // 5: chainguard.platform.iam.IdentityFilter
+ (*LookupRequest)(nil), // 6: chainguard.platform.iam.LookupRequest
+ (*Identity_ClaimMatch)(nil), // 7: chainguard.platform.iam.Identity.ClaimMatch
+ (*Identity_StaticKeys)(nil), // 8: chainguard.platform.iam.Identity.StaticKeys
+ (*Identity_AWSIdentity)(nil), // 9: chainguard.platform.iam.Identity.AWSIdentity
+ nil, // 10: chainguard.platform.iam.Identity.ClaimMatch.ClaimsEntry
+ nil, // 11: chainguard.platform.iam.Identity.ClaimMatch.ClaimPatternsEntry
+ (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 13: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 14: google.protobuf.Empty
+}
+var file_identity_platform_proto_depIdxs = []int32{
+ 12, // 0: chainguard.platform.iam.Identity.created_at:type_name -> google.protobuf.Timestamp
+ 12, // 1: chainguard.platform.iam.Identity.updated_at:type_name -> google.protobuf.Timestamp
+ 7, // 2: chainguard.platform.iam.Identity.claim_match:type_name -> chainguard.platform.iam.Identity.ClaimMatch
+ 8, // 3: chainguard.platform.iam.Identity.static:type_name -> chainguard.platform.iam.Identity.StaticKeys
+ 0, // 4: chainguard.platform.iam.Identity.service_principal:type_name -> chainguard.platform.iam.ServicePrincipal
+ 9, // 5: chainguard.platform.iam.Identity.aws_identity:type_name -> chainguard.platform.iam.Identity.AWSIdentity
+ 1, // 6: chainguard.platform.iam.CreateIdentityRequest.identity:type_name -> chainguard.platform.iam.Identity
+ 1, // 7: chainguard.platform.iam.IdentityList.items:type_name -> chainguard.platform.iam.Identity
+ 13, // 8: chainguard.platform.iam.IdentityFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 10, // 9: chainguard.platform.iam.Identity.ClaimMatch.claims:type_name -> chainguard.platform.iam.Identity.ClaimMatch.ClaimsEntry
+ 11, // 10: chainguard.platform.iam.Identity.ClaimMatch.claim_patterns:type_name -> chainguard.platform.iam.Identity.ClaimMatch.ClaimPatternsEntry
+ 12, // 11: chainguard.platform.iam.Identity.StaticKeys.expiration:type_name -> google.protobuf.Timestamp
+ 2, // 12: chainguard.platform.iam.Identities.Create:input_type -> chainguard.platform.iam.CreateIdentityRequest
+ 1, // 13: chainguard.platform.iam.Identities.Update:input_type -> chainguard.platform.iam.Identity
+ 5, // 14: chainguard.platform.iam.Identities.List:input_type -> chainguard.platform.iam.IdentityFilter
+ 6, // 15: chainguard.platform.iam.Identities.Lookup:input_type -> chainguard.platform.iam.LookupRequest
+ 3, // 16: chainguard.platform.iam.Identities.Delete:input_type -> chainguard.platform.iam.DeleteIdentityRequest
+ 1, // 17: chainguard.platform.iam.Identities.Create:output_type -> chainguard.platform.iam.Identity
+ 1, // 18: chainguard.platform.iam.Identities.Update:output_type -> chainguard.platform.iam.Identity
+ 4, // 19: chainguard.platform.iam.Identities.List:output_type -> chainguard.platform.iam.IdentityList
+ 1, // 20: chainguard.platform.iam.Identities.Lookup:output_type -> chainguard.platform.iam.Identity
+ 14, // 21: chainguard.platform.iam.Identities.Delete:output_type -> google.protobuf.Empty
+ 17, // [17:22] is the sub-list for method output_type
+ 12, // [12:17] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
+}
+
+func init() { file_identity_platform_proto_init() }
+func file_identity_platform_proto_init() {
+ if File_identity_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_identity_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateIdentityRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteIdentityRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*LookupRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity_ClaimMatch); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity_StaticKeys); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Identity_AWSIdentity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_identity_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*Identity_ClaimMatch_)(nil),
+ (*Identity_Static)(nil),
+ (*Identity_ServicePrincipal)(nil),
+ (*Identity_AwsIdentity)(nil),
+ }
+ file_identity_platform_proto_msgTypes[6].OneofWrappers = []interface{}{
+ (*Identity_ClaimMatch_Issuer)(nil),
+ (*Identity_ClaimMatch_IssuerPattern)(nil),
+ (*Identity_ClaimMatch_Subject)(nil),
+ (*Identity_ClaimMatch_SubjectPattern)(nil),
+ (*Identity_ClaimMatch_Audience)(nil),
+ (*Identity_ClaimMatch_AudiencePattern)(nil),
+ }
+ file_identity_platform_proto_msgTypes[8].OneofWrappers = []interface{}{
+ (*Identity_AWSIdentity_Arn)(nil),
+ (*Identity_AWSIdentity_ArnPattern)(nil),
+ (*Identity_AWSIdentity_UserId)(nil),
+ (*Identity_AWSIdentity_UserIdPattern)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_identity_platform_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 11,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_identity_platform_proto_goTypes,
+ DependencyIndexes: file_identity_platform_proto_depIdxs,
+ EnumInfos: file_identity_platform_proto_enumTypes,
+ MessageInfos: file_identity_platform_proto_msgTypes,
+ }.Build()
+ File_identity_platform_proto = out.File
+ file_identity_platform_proto_rawDesc = nil
+ file_identity_platform_proto_goTypes = nil
+ file_identity_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/identity.platform.pb.gw.go b/proto/platform/iam/v1/identity.platform.pb.gw.go
new file mode 100644
index 00000000..78f1d948
--- /dev/null
+++ b/proto/platform/iam/v1/identity.platform.pb.gw.go
@@ -0,0 +1,591 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: identity.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateIdentityRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Identity); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateIdentityRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Identity); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Identities_Update_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Identity
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_Update_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Identity
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Identities_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Identities_List_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_List_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Identities_Lookup_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Identities_Lookup_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq LookupRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_Lookup_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Lookup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_Lookup_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq LookupRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Identities_Lookup_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Lookup(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Identities_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client IdentitiesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteIdentityRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Identities_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server IdentitiesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteIdentityRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterIdentitiesHandlerServer registers the http handlers for service Identities to "mux".
+// UnaryRPC :call IdentitiesServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentitiesHandlerFromEndpoint instead.
+func RegisterIdentitiesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentitiesServer) error {
+
+ mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Identities_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Update", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Identities_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/List", runtime.WithHTTPPathPattern("/iam/v1/identities"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Identities_Lookup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Lookup", runtime.WithHTTPPathPattern("/iam/v1/identities/lookup"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_Lookup_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Lookup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Identities_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Delete", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Identities_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterIdentitiesHandlerFromEndpoint is same as RegisterIdentitiesHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterIdentitiesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterIdentitiesHandler(ctx, mux, conn)
+}
+
+// RegisterIdentitiesHandler registers the http handlers for service Identities to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterIdentitiesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterIdentitiesHandlerClient(ctx, mux, NewIdentitiesClient(conn))
+}
+
+// RegisterIdentitiesHandlerClient registers the http handlers for service Identities
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentitiesClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentitiesClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "IdentitiesClient" to call the correct interceptors.
+func RegisterIdentitiesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentitiesClient) error {
+
+ mux.Handle("POST", pattern_Identities_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Create", runtime.WithHTTPPathPattern("/iam/v1/identities/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Identities_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Update", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Identities_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/List", runtime.WithHTTPPathPattern("/iam/v1/identities"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Identities_Lookup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Lookup", runtime.WithHTTPPathPattern("/iam/v1/identities/lookup"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_Lookup_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Lookup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Identities_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Identities/Delete", runtime.WithHTTPPathPattern("/iam/v1/identities/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Identities_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Identities_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Identities_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "parent_id"}, ""))
+
+ pattern_Identities_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "id"}, ""))
+
+ pattern_Identities_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identities"}, ""))
+
+ pattern_Identities_Lookup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"iam", "v1", "identities", "lookup"}, ""))
+
+ pattern_Identities_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identities", "id"}, ""))
+)
+
+var (
+ forward_Identities_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Identities_Update_0 = runtime.ForwardResponseMessage
+
+ forward_Identities_List_0 = runtime.ForwardResponseMessage
+
+ forward_Identities_Lookup_0 = runtime.ForwardResponseMessage
+
+ forward_Identities_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/identity.platform.proto b/proto/platform/iam/v1/identity.platform.proto
new file mode 100644
index 00000000..48dfbeef
--- /dev/null
+++ b/proto/platform/iam/v1/identity.platform.proto
@@ -0,0 +1,251 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMIdentitiesProto";
+
+package chainguard.platform.iam;
+
+import "google/protobuf/timestamp.proto";
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Identities {
+ rpc Create(CreateIdentityRequest) returns (Identity) {
+ option (google.api.http) = {
+ post: "/iam/v1/identities/{parent_id=**}"
+ body: "identity"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(Identity) returns (Identity) {
+ option (google.api.http) = {
+ put: "/iam/v1/identities/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(IdentityFilter) returns (IdentityList) {
+ option (google.api.http) = {
+ get: "/iam/v1/identities"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Lookup(LookupRequest) returns (Identity) {
+ option (google.api.http) = {
+ get: "/iam/v1/identities/lookup"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteIdentityRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/identities/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+enum ServicePrincipal {
+ UNKNOWN = 0;
+
+ COSIGNED = 1;
+ INGESTER = 2;
+ CATALOG_SYNCER = 3;
+}
+
+message Identity {
+ // id is unique identifier of this specific identity.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+ // name, human readable name of identity.
+ string name = 2;
+ // description, human readable of identity.
+ string description = 3;
+ // created_at is the timestamp for when the identity was created.
+ google.protobuf.Timestamp created_at = 4;
+ // updated_at is the timestamp for when the identity was last updated.
+ google.protobuf.Timestamp updated_at = 5;
+
+ // relationship is used to describe how this identity relates to
+ // identities coming from 3rd party Identity Providers (IdPs)
+ oneof relationship {
+ // claim_match checks the third party IdP token's claims against one
+ // or more configured patterns.
+ ClaimMatch claim_match = 10;
+
+ // static is equivalent to literal, but instead of discovering the
+ // IdP's verification keys we verify the identity using pre-registered
+ // verification keys. This is intended for use with identities from
+ // providers without an "online" issuer (network accessible to our IdP),
+ // such as a KinD/minikube cluster.
+ // NOTE: because this path does not have a mechanism for key rotation
+ // the identity will expire, with a maximum lifetime of 30d.
+ StaticKeys static = 11;
+
+ // service_principal is the name of the Chainguard service that is
+ // allowed to assume this identity. These names correlate with the
+ // service names used in impersonation with account associations.
+ ServicePrincipal service_principal = 12;
+
+ // aws_identity matches AWS IAM users and roles to an identity
+ AWSIdentity aws_identity = 13;
+ }
+
+ message ClaimMatch {
+ // Required, matches the `iss` claim.
+ oneof iss {
+ // issuer of the OIDC ID tokens issued for this identity.
+ string issuer = 1;
+ // issuer_pattern is a regular expression for matching the
+ // token's issuer claim.
+ string issuer_pattern = 2;
+ }
+
+ // Required, matches the `sub` claim.
+ oneof sub {
+ // subject of OIDC ID tokens issued for this identity.
+ string subject = 3;
+
+ // subject_pattern is a regular expression for matching the
+ // token's subject claim.
+ string subject_pattern = 4;
+ }
+
+ // Optional, matches the `aud` claim.
+ // When unspecified, this defaults to the hostname of the SaaS
+ // environment's issuer.
+ oneof aud {
+ // audience of OIDC ID tokens issued for this identity.
+ string audience = 5;
+
+ // audience_pattern is a regular expression for matching the
+ // token's audience claim.
+ string audience_pattern = 6;
+ }
+
+ // claims is a mapping from the name of a custom claim
+ // to a literal matching that claim's value.
+ map claims = 7;
+
+ // claim_patterns is a mapping from the name of a custom claim
+ // to a regular expression for matching that claim's value.
+ map claim_patterns = 8;
+ }
+
+ message StaticKeys {
+ // issuer of the OIDC ID tokens issued for this identity.
+ // Matches the `iss` claim.
+ string issuer = 1;
+
+ // subject of OIDC ID tokens issued for this identity.
+ // Matches the `sub` claim.
+ string subject = 2;
+
+ // issuer_keys is JWKS-formatted public keys for the issuer.
+ // Required, otherwise use Literal.
+ string issuer_keys = 4;
+
+ // expiration is the time when the issuer_keys will expire.
+ // Defaults to / Maximum of 30 days after creation time.
+ google.protobuf.Timestamp expiration = 5;
+ }
+
+ message AWSIdentity {
+ // Required, matches the `Account` field in the GetCallerID AWS IAM
+ // response
+ string aws_account = 1;
+
+ // Required, matches the `Arn` field in the GetCallerID AWS IAM response
+ oneof aws_arn {
+ // Exact match to Arn of AWS Identity
+ string arn = 3;
+
+ // Regular expression for matching Arn
+ string arn_pattern = 4;
+ }
+
+ // Required, matches the `UserId` field of th GetCallerID AWS IAM response
+ oneof aws_user_id {
+ // Exacty match of the UserID field
+ string user_id = 5;
+
+ // Regular expression for UserId field
+ string user_id_pattern = 6;
+ }
+ }
+}
+
+message CreateIdentityRequest {
+ // parent_id, The Group UIDP path under which the new Identity resides.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // Identity to create.
+ Identity identity = 2;
+}
+
+message DeleteIdentityRequest {
+ // ID, UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message IdentityList {
+ repeated Identity items = 1;
+}
+
+message IdentityFilter {
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // id is unique identifier to look up.
+ string id = 2;
+}
+
+message LookupRequest {
+ // issuer is the oidc issuer to look up.
+ string issuer = 1;
+
+ // subject is the subject to look up.
+ string subject = 2;
+}
diff --git a/proto/platform/iam/v1/identity.platform_grpc.pb.go b/proto/platform/iam/v1/identity.platform_grpc.pb.go
new file mode 100644
index 00000000..7dfa1065
--- /dev/null
+++ b/proto/platform/iam/v1/identity.platform_grpc.pb.go
@@ -0,0 +1,258 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: identity.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Identities_Create_FullMethodName = "/chainguard.platform.iam.Identities/Create"
+ Identities_Update_FullMethodName = "/chainguard.platform.iam.Identities/Update"
+ Identities_List_FullMethodName = "/chainguard.platform.iam.Identities/List"
+ Identities_Lookup_FullMethodName = "/chainguard.platform.iam.Identities/Lookup"
+ Identities_Delete_FullMethodName = "/chainguard.platform.iam.Identities/Delete"
+)
+
+// IdentitiesClient is the client API for Identities service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type IdentitiesClient interface {
+ Create(ctx context.Context, in *CreateIdentityRequest, opts ...grpc.CallOption) (*Identity, error)
+ Update(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error)
+ List(ctx context.Context, in *IdentityFilter, opts ...grpc.CallOption) (*IdentityList, error)
+ Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*Identity, error)
+ Delete(ctx context.Context, in *DeleteIdentityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type identitiesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewIdentitiesClient(cc grpc.ClientConnInterface) IdentitiesClient {
+ return &identitiesClient{cc}
+}
+
+func (c *identitiesClient) Create(ctx context.Context, in *CreateIdentityRequest, opts ...grpc.CallOption) (*Identity, error) {
+ out := new(Identity)
+ err := c.cc.Invoke(ctx, Identities_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identitiesClient) Update(ctx context.Context, in *Identity, opts ...grpc.CallOption) (*Identity, error) {
+ out := new(Identity)
+ err := c.cc.Invoke(ctx, Identities_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identitiesClient) List(ctx context.Context, in *IdentityFilter, opts ...grpc.CallOption) (*IdentityList, error) {
+ out := new(IdentityList)
+ err := c.cc.Invoke(ctx, Identities_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identitiesClient) Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*Identity, error) {
+ out := new(Identity)
+ err := c.cc.Invoke(ctx, Identities_Lookup_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identitiesClient) Delete(ctx context.Context, in *DeleteIdentityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Identities_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// IdentitiesServer is the server API for Identities service.
+// All implementations must embed UnimplementedIdentitiesServer
+// for forward compatibility
+type IdentitiesServer interface {
+ Create(context.Context, *CreateIdentityRequest) (*Identity, error)
+ Update(context.Context, *Identity) (*Identity, error)
+ List(context.Context, *IdentityFilter) (*IdentityList, error)
+ Lookup(context.Context, *LookupRequest) (*Identity, error)
+ Delete(context.Context, *DeleteIdentityRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedIdentitiesServer()
+}
+
+// UnimplementedIdentitiesServer must be embedded to have forward compatible implementations.
+type UnimplementedIdentitiesServer struct {
+}
+
+func (UnimplementedIdentitiesServer) Create(context.Context, *CreateIdentityRequest) (*Identity, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedIdentitiesServer) Update(context.Context, *Identity) (*Identity, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedIdentitiesServer) List(context.Context, *IdentityFilter) (*IdentityList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedIdentitiesServer) Lookup(context.Context, *LookupRequest) (*Identity, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Lookup not implemented")
+}
+func (UnimplementedIdentitiesServer) Delete(context.Context, *DeleteIdentityRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedIdentitiesServer) mustEmbedUnimplementedIdentitiesServer() {}
+
+// UnsafeIdentitiesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to IdentitiesServer will
+// result in compilation errors.
+type UnsafeIdentitiesServer interface {
+ mustEmbedUnimplementedIdentitiesServer()
+}
+
+func RegisterIdentitiesServer(s grpc.ServiceRegistrar, srv IdentitiesServer) {
+ s.RegisterService(&Identities_ServiceDesc, srv)
+}
+
+func _Identities_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateIdentityRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).Create(ctx, req.(*CreateIdentityRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identities_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Identity)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).Update(ctx, req.(*Identity))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identities_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(IdentityFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).List(ctx, req.(*IdentityFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identities_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LookupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).Lookup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_Lookup_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).Lookup(ctx, req.(*LookupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identities_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteIdentityRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentitiesServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Identities_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentitiesServer).Delete(ctx, req.(*DeleteIdentityRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Identities_ServiceDesc is the grpc.ServiceDesc for Identities service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Identities_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.Identities",
+ HandlerType: (*IdentitiesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Identities_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _Identities_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Identities_List_Handler,
+ },
+ {
+ MethodName: "Lookup",
+ Handler: _Identities_Lookup_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Identities_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "identity.platform.proto",
+}
diff --git a/proto/platform/iam/v1/identity_providers.platform.event.go b/proto/platform/iam/v1/identity_providers.platform.event.go
new file mode 100644
index 00000000..c3a344ec
--- /dev/null
+++ b/proto/platform/iam/v1/identity_providers.platform.event.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *IdentityProvider) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *IdentityProvider) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteIdentityProviderRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteIdentityProviderRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.go b/proto/platform/iam/v1/identity_providers.platform.pb.go
new file mode 100644
index 00000000..eba96e4e
--- /dev/null
+++ b/proto/platform/iam/v1/identity_providers.platform.pb.go
@@ -0,0 +1,693 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: identity_providers.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type IdentityProvider struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is unique identifier of this specific identity provider
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // default_role is the UIDP of an optional default role
+ // to grant users of this identity provider.
+ DefaultRole string `protobuf:"bytes,4,opt,name=default_role,json=defaultRole,proto3" json:"default_role,omitempty"`
+ // Types that are assignable to Configuration:
+ //
+ // *IdentityProvider_Oidc
+ Configuration isIdentityProvider_Configuration `protobuf_oneof:"configuration"`
+}
+
+func (x *IdentityProvider) Reset() {
+ *x = IdentityProvider{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityProvider) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityProvider) ProtoMessage() {}
+
+func (x *IdentityProvider) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityProvider.ProtoReflect.Descriptor instead.
+func (*IdentityProvider) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *IdentityProvider) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *IdentityProvider) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *IdentityProvider) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *IdentityProvider) GetDefaultRole() string {
+ if x != nil {
+ return x.DefaultRole
+ }
+ return ""
+}
+
+func (m *IdentityProvider) GetConfiguration() isIdentityProvider_Configuration {
+ if m != nil {
+ return m.Configuration
+ }
+ return nil
+}
+
+func (x *IdentityProvider) GetOidc() *IdentityProvider_OIDC {
+ if x, ok := x.GetConfiguration().(*IdentityProvider_Oidc); ok {
+ return x.Oidc
+ }
+ return nil
+}
+
+type isIdentityProvider_Configuration interface {
+ isIdentityProvider_Configuration()
+}
+
+type IdentityProvider_Oidc struct {
+ Oidc *IdentityProvider_OIDC `protobuf:"bytes,20,opt,name=oidc,proto3,oneof"`
+}
+
+func (*IdentityProvider_Oidc) isIdentityProvider_Configuration() {}
+
+type CreateIdentityProviderRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id is the exact UIDP of the IAM group to nest this identity provider under
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ IdentityProvider *IdentityProvider `protobuf:"bytes,2,opt,name=identity_provider,json=identityProvider,proto3" json:"identity_provider,omitempty"`
+}
+
+func (x *CreateIdentityProviderRequest) Reset() {
+ *x = CreateIdentityProviderRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateIdentityProviderRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateIdentityProviderRequest) ProtoMessage() {}
+
+func (x *CreateIdentityProviderRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateIdentityProviderRequest.ProtoReflect.Descriptor instead.
+func (*CreateIdentityProviderRequest) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CreateIdentityProviderRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateIdentityProviderRequest) GetIdentityProvider() *IdentityProvider {
+ if x != nil {
+ return x.IdentityProvider
+ }
+ return nil
+}
+
+type DeleteIdentityProviderRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the IdP
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteIdentityProviderRequest) Reset() {
+ *x = DeleteIdentityProviderRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteIdentityProviderRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteIdentityProviderRequest) ProtoMessage() {}
+
+func (x *DeleteIdentityProviderRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteIdentityProviderRequest.ProtoReflect.Descriptor instead.
+func (*DeleteIdentityProviderRequest) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *DeleteIdentityProviderRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type IdentityProviderFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Exact match on identity provider UIDP
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Exact match on identity provider name
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // uidp filers records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,3,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *IdentityProviderFilter) Reset() {
+ *x = IdentityProviderFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityProviderFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityProviderFilter) ProtoMessage() {}
+
+func (x *IdentityProviderFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityProviderFilter.ProtoReflect.Descriptor instead.
+func (*IdentityProviderFilter) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *IdentityProviderFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *IdentityProviderFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *IdentityProviderFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+type IdentityProviderList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*IdentityProvider `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *IdentityProviderList) Reset() {
+ *x = IdentityProviderList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityProviderList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityProviderList) ProtoMessage() {}
+
+func (x *IdentityProviderList) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityProviderList.ProtoReflect.Descriptor instead.
+func (*IdentityProviderList) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *IdentityProviderList) GetItems() []*IdentityProvider {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type IdentityProvider_OIDC struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Issuer URL (e.g https://accounts.google.com)
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
+ ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
+ // Additional scopes to request for ID tokens
+ AdditionalScopes []string `protobuf:"bytes,4,rep,name=additional_scopes,json=additionalScopes,proto3" json:"additional_scopes,omitempty"`
+}
+
+func (x *IdentityProvider_OIDC) Reset() {
+ *x = IdentityProvider_OIDC{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_identity_providers_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *IdentityProvider_OIDC) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IdentityProvider_OIDC) ProtoMessage() {}
+
+func (x *IdentityProvider_OIDC) ProtoReflect() protoreflect.Message {
+ mi := &file_identity_providers_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use IdentityProvider_OIDC.ProtoReflect.Descriptor instead.
+func (*IdentityProvider_OIDC) Descriptor() ([]byte, []int) {
+ return file_identity_providers_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *IdentityProvider_OIDC) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *IdentityProvider_OIDC) GetClientId() string {
+ if x != nil {
+ return x.ClientId
+ }
+ return ""
+}
+
+func (x *IdentityProvider_OIDC) GetClientSecret() string {
+ if x != nil {
+ return x.ClientSecret
+ }
+ return ""
+}
+
+func (x *IdentityProvider_OIDC) GetAdditionalScopes() []string {
+ if x != nil {
+ return x.AdditionalScopes
+ }
+ return nil
+}
+
+var File_identity_providers_platform_proto protoreflect.FileDescriptor
+
+var file_identity_providers_platform_proto_rawDesc = []byte{
+ 0x0a, 0x21, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74,
+ 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69,
+ 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+ 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x6f, 0x69, 0x64, 0x63, 0x18,
+ 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+ 0x2e, 0x4f, 0x49, 0x44, 0x43, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x69, 0x64, 0x63, 0x1a, 0x8d, 0x01,
+ 0x0a, 0x04, 0x4f, 0x49, 0x44, 0x43, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x1b,
+ 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63,
+ 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+ 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
+ 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x0f, 0x0a,
+ 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c,
+ 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x56, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x10, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x37, 0x0a,
+ 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
+ 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x78, 0x0a, 0x16, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70,
+ 0x22, 0x57, 0x0a, 0x14, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x72, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0xed, 0x06, 0x0a, 0x11, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12,
+ 0x84, 0x02, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x96, 0x01,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x28, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+ 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x3a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x95, 0x0a, 0x91,
+ 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
+ 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
+ 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x1a,
+ 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x96,
+ 0x0a, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x97, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x1a, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x97, 0x0a,
+ 0x10, 0x01, 0x12, 0xd4, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x36, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7a, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73,
+ 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0x98, 0x0a, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
+ 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x72, 0x0a, 0x22, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42,
+ 0x20, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_identity_providers_platform_proto_rawDescOnce sync.Once
+ file_identity_providers_platform_proto_rawDescData = file_identity_providers_platform_proto_rawDesc
+)
+
+func file_identity_providers_platform_proto_rawDescGZIP() []byte {
+ file_identity_providers_platform_proto_rawDescOnce.Do(func() {
+ file_identity_providers_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_identity_providers_platform_proto_rawDescData)
+ })
+ return file_identity_providers_platform_proto_rawDescData
+}
+
+var file_identity_providers_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_identity_providers_platform_proto_goTypes = []interface{}{
+ (*IdentityProvider)(nil), // 0: chainguard.platform.iam.IdentityProvider
+ (*CreateIdentityProviderRequest)(nil), // 1: chainguard.platform.iam.CreateIdentityProviderRequest
+ (*DeleteIdentityProviderRequest)(nil), // 2: chainguard.platform.iam.DeleteIdentityProviderRequest
+ (*IdentityProviderFilter)(nil), // 3: chainguard.platform.iam.IdentityProviderFilter
+ (*IdentityProviderList)(nil), // 4: chainguard.platform.iam.IdentityProviderList
+ (*IdentityProvider_OIDC)(nil), // 5: chainguard.platform.iam.IdentityProvider.OIDC
+ (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
+}
+var file_identity_providers_platform_proto_depIdxs = []int32{
+ 5, // 0: chainguard.platform.iam.IdentityProvider.oidc:type_name -> chainguard.platform.iam.IdentityProvider.OIDC
+ 0, // 1: chainguard.platform.iam.CreateIdentityProviderRequest.identity_provider:type_name -> chainguard.platform.iam.IdentityProvider
+ 6, // 2: chainguard.platform.iam.IdentityProviderFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 3: chainguard.platform.iam.IdentityProviderList.items:type_name -> chainguard.platform.iam.IdentityProvider
+ 1, // 4: chainguard.platform.iam.IdentityProviders.Create:input_type -> chainguard.platform.iam.CreateIdentityProviderRequest
+ 0, // 5: chainguard.platform.iam.IdentityProviders.Update:input_type -> chainguard.platform.iam.IdentityProvider
+ 3, // 6: chainguard.platform.iam.IdentityProviders.List:input_type -> chainguard.platform.iam.IdentityProviderFilter
+ 2, // 7: chainguard.platform.iam.IdentityProviders.Delete:input_type -> chainguard.platform.iam.DeleteIdentityProviderRequest
+ 0, // 8: chainguard.platform.iam.IdentityProviders.Create:output_type -> chainguard.platform.iam.IdentityProvider
+ 0, // 9: chainguard.platform.iam.IdentityProviders.Update:output_type -> chainguard.platform.iam.IdentityProvider
+ 4, // 10: chainguard.platform.iam.IdentityProviders.List:output_type -> chainguard.platform.iam.IdentityProviderList
+ 7, // 11: chainguard.platform.iam.IdentityProviders.Delete:output_type -> google.protobuf.Empty
+ 8, // [8:12] is the sub-list for method output_type
+ 4, // [4:8] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
+}
+
+func init() { file_identity_providers_platform_proto_init() }
+func file_identity_providers_platform_proto_init() {
+ if File_identity_providers_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_identity_providers_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityProvider); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateIdentityProviderRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteIdentityProviderRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityProviderFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityProviderList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IdentityProvider_OIDC); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_identity_providers_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*IdentityProvider_Oidc)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_identity_providers_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_identity_providers_platform_proto_goTypes,
+ DependencyIndexes: file_identity_providers_platform_proto_depIdxs,
+ MessageInfos: file_identity_providers_platform_proto_msgTypes,
+ }.Build()
+ File_identity_providers_platform_proto = out.File
+ file_identity_providers_platform_proto_rawDesc = nil
+ file_identity_providers_platform_proto_goTypes = nil
+ file_identity_providers_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.gw.go b/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
new file mode 100644
index 00000000..6ac2c190
--- /dev/null
+++ b/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
@@ -0,0 +1,506 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: identity_providers.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_IdentityProviders_Create_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateIdentityProviderRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.IdentityProvider); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_IdentityProviders_Create_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateIdentityProviderRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.IdentityProvider); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_IdentityProviders_Update_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityProvider
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_IdentityProviders_Update_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityProvider
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_IdentityProviders_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_IdentityProviders_List_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityProviderFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_IdentityProviders_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_IdentityProviders_List_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq IdentityProviderFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_IdentityProviders_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_IdentityProviders_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client IdentityProvidersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteIdentityProviderRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_IdentityProviders_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server IdentityProvidersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteIdentityProviderRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterIdentityProvidersHandlerServer registers the http handlers for service IdentityProviders to "mux".
+// UnaryRPC :call IdentityProvidersServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdentityProvidersHandlerFromEndpoint instead.
+func RegisterIdentityProvidersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdentityProvidersServer) error {
+
+ mux.Handle("POST", pattern_IdentityProviders_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Create", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_IdentityProviders_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_IdentityProviders_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Update", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_IdentityProviders_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_IdentityProviders_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/List", runtime.WithHTTPPathPattern("/iam/v1/identityProviders"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_IdentityProviders_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_IdentityProviders_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Delete", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_IdentityProviders_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterIdentityProvidersHandlerFromEndpoint is same as RegisterIdentityProvidersHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterIdentityProvidersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterIdentityProvidersHandler(ctx, mux, conn)
+}
+
+// RegisterIdentityProvidersHandler registers the http handlers for service IdentityProviders to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterIdentityProvidersHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterIdentityProvidersHandlerClient(ctx, mux, NewIdentityProvidersClient(conn))
+}
+
+// RegisterIdentityProvidersHandlerClient registers the http handlers for service IdentityProviders
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdentityProvidersClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdentityProvidersClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "IdentityProvidersClient" to call the correct interceptors.
+func RegisterIdentityProvidersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdentityProvidersClient) error {
+
+ mux.Handle("POST", pattern_IdentityProviders_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Create", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_IdentityProviders_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_IdentityProviders_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Update", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_IdentityProviders_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_IdentityProviders_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/List", runtime.WithHTTPPathPattern("/iam/v1/identityProviders"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_IdentityProviders_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_IdentityProviders_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.IdentityProviders/Delete", runtime.WithHTTPPathPattern("/iam/v1/identityProviders/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_IdentityProviders_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_IdentityProviders_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_IdentityProviders_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "parent_id"}, ""))
+
+ pattern_IdentityProviders_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "id"}, ""))
+
+ pattern_IdentityProviders_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "identityProviders"}, ""))
+
+ pattern_IdentityProviders_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "identityProviders", "id"}, ""))
+)
+
+var (
+ forward_IdentityProviders_Create_0 = runtime.ForwardResponseMessage
+
+ forward_IdentityProviders_Update_0 = runtime.ForwardResponseMessage
+
+ forward_IdentityProviders_List_0 = runtime.ForwardResponseMessage
+
+ forward_IdentityProviders_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/identity_providers.platform.proto b/proto/platform/iam/v1/identity_providers.platform.proto
new file mode 100644
index 00000000..d74e65a7
--- /dev/null
+++ b/proto/platform/iam/v1/identity_providers.platform.proto
@@ -0,0 +1,149 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMIdentityProviderProto";
+
+package chainguard.platform.iam;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service IdentityProviders {
+ rpc Create(CreateIdentityProviderRequest) returns (IdentityProvider) {
+ option (google.api.http) = {
+ post: "/iam/v1/identityProviders/{parent_id=**}"
+ body: "identity_provider"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ CAP_IAM_IDENTITY_PROVIDERS_CREATE,
+ // Creating an IdentityProvider provides to option of choosing
+ // a default role, which makes it effectively a RoleBinding
+ // promise, so check that the caller has permission to
+ // create RoleBindings as well.
+ CAP_IAM_ROLE_BINDINGS_CREATE
+ ]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity_providers.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(IdentityProvider) returns (IdentityProvider) {
+ option (google.api.http) = {
+ put: "/iam/v1/identityProviders/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ CAP_IAM_IDENTITY_PROVIDERS_UPDATE,
+ // Updating an IdentityProvider provides to option of choosing
+ // a default role, which makes it effectively a RoleBinding
+ // promise, so check that the caller has permission to
+ // create RoleBindings as well.
+ CAP_IAM_ROLE_BINDINGS_CREATE
+ ]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity_providers.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(IdentityProviderFilter) returns (IdentityProviderList) {
+ option (google.api.http) = {
+ get: "/iam/v1/identityProviders"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_PROVIDERS_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteIdentityProviderRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/identityProviders/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_IDENTITY_PROVIDERS_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.identity_providers.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+}
+
+message IdentityProvider {
+ // id is unique identifier of this specific identity provider
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ string name = 2;
+ string description = 3;
+
+ // default_role is the UIDP of an optional default role
+ // to grant users of this identity provider.
+ string default_role = 4;
+
+ oneof configuration {
+ OIDC oidc = 20;
+
+ // TODO: SAML, LDAP etc;
+ }
+
+ message OIDC {
+ // Issuer URL (e.g https://accounts.google.com)
+ string issuer = 1;
+
+ string client_id = 2;
+ string client_secret = 3;
+
+ // Additional scopes to request for ID tokens
+ repeated string additional_scopes = 4;
+ }
+}
+
+message CreateIdentityProviderRequest {
+ // parent_id is the exact UIDP of the IAM group to nest this identity provider under
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ IdentityProvider identity_provider = 2;
+}
+
+message DeleteIdentityProviderRequest {
+ // id is the exact UIDP of the IdP
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message IdentityProviderFilter {
+ // Exact match on identity provider UIDP
+ string id = 1;
+
+ // Exact match on identity provider name
+ string name = 2;
+
+ // uidp filers records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 3;
+}
+
+message IdentityProviderList {
+ repeated IdentityProvider items = 1;
+}
diff --git a/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go b/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
new file mode 100644
index 00000000..63930595
--- /dev/null
+++ b/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
@@ -0,0 +1,221 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: identity_providers.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ IdentityProviders_Create_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Create"
+ IdentityProviders_Update_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Update"
+ IdentityProviders_List_FullMethodName = "/chainguard.platform.iam.IdentityProviders/List"
+ IdentityProviders_Delete_FullMethodName = "/chainguard.platform.iam.IdentityProviders/Delete"
+)
+
+// IdentityProvidersClient is the client API for IdentityProviders service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type IdentityProvidersClient interface {
+ Create(ctx context.Context, in *CreateIdentityProviderRequest, opts ...grpc.CallOption) (*IdentityProvider, error)
+ Update(ctx context.Context, in *IdentityProvider, opts ...grpc.CallOption) (*IdentityProvider, error)
+ List(ctx context.Context, in *IdentityProviderFilter, opts ...grpc.CallOption) (*IdentityProviderList, error)
+ Delete(ctx context.Context, in *DeleteIdentityProviderRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type identityProvidersClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewIdentityProvidersClient(cc grpc.ClientConnInterface) IdentityProvidersClient {
+ return &identityProvidersClient{cc}
+}
+
+func (c *identityProvidersClient) Create(ctx context.Context, in *CreateIdentityProviderRequest, opts ...grpc.CallOption) (*IdentityProvider, error) {
+ out := new(IdentityProvider)
+ err := c.cc.Invoke(ctx, IdentityProviders_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identityProvidersClient) Update(ctx context.Context, in *IdentityProvider, opts ...grpc.CallOption) (*IdentityProvider, error) {
+ out := new(IdentityProvider)
+ err := c.cc.Invoke(ctx, IdentityProviders_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identityProvidersClient) List(ctx context.Context, in *IdentityProviderFilter, opts ...grpc.CallOption) (*IdentityProviderList, error) {
+ out := new(IdentityProviderList)
+ err := c.cc.Invoke(ctx, IdentityProviders_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identityProvidersClient) Delete(ctx context.Context, in *DeleteIdentityProviderRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, IdentityProviders_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// IdentityProvidersServer is the server API for IdentityProviders service.
+// All implementations must embed UnimplementedIdentityProvidersServer
+// for forward compatibility
+type IdentityProvidersServer interface {
+ Create(context.Context, *CreateIdentityProviderRequest) (*IdentityProvider, error)
+ Update(context.Context, *IdentityProvider) (*IdentityProvider, error)
+ List(context.Context, *IdentityProviderFilter) (*IdentityProviderList, error)
+ Delete(context.Context, *DeleteIdentityProviderRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedIdentityProvidersServer()
+}
+
+// UnimplementedIdentityProvidersServer must be embedded to have forward compatible implementations.
+type UnimplementedIdentityProvidersServer struct {
+}
+
+func (UnimplementedIdentityProvidersServer) Create(context.Context, *CreateIdentityProviderRequest) (*IdentityProvider, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedIdentityProvidersServer) Update(context.Context, *IdentityProvider) (*IdentityProvider, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedIdentityProvidersServer) List(context.Context, *IdentityProviderFilter) (*IdentityProviderList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedIdentityProvidersServer) Delete(context.Context, *DeleteIdentityProviderRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedIdentityProvidersServer) mustEmbedUnimplementedIdentityProvidersServer() {}
+
+// UnsafeIdentityProvidersServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to IdentityProvidersServer will
+// result in compilation errors.
+type UnsafeIdentityProvidersServer interface {
+ mustEmbedUnimplementedIdentityProvidersServer()
+}
+
+func RegisterIdentityProvidersServer(s grpc.ServiceRegistrar, srv IdentityProvidersServer) {
+ s.RegisterService(&IdentityProviders_ServiceDesc, srv)
+}
+
+func _IdentityProviders_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateIdentityProviderRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentityProvidersServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: IdentityProviders_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentityProvidersServer).Create(ctx, req.(*CreateIdentityProviderRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _IdentityProviders_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(IdentityProvider)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentityProvidersServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: IdentityProviders_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentityProvidersServer).Update(ctx, req.(*IdentityProvider))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _IdentityProviders_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(IdentityProviderFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentityProvidersServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: IdentityProviders_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentityProvidersServer).List(ctx, req.(*IdentityProviderFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _IdentityProviders_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteIdentityProviderRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentityProvidersServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: IdentityProviders_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentityProvidersServer).Delete(ctx, req.(*DeleteIdentityProviderRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// IdentityProviders_ServiceDesc is the grpc.ServiceDesc for IdentityProviders service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var IdentityProviders_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.IdentityProviders",
+ HandlerType: (*IdentityProvidersServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _IdentityProviders_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _IdentityProviders_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _IdentityProviders_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _IdentityProviders_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "identity_providers.platform.proto",
+}
diff --git a/proto/platform/iam/v1/policies.platform.event.go b/proto/platform/iam/v1/policies.platform.event.go
new file mode 100644
index 00000000..b34d781a
--- /dev/null
+++ b/proto/platform/iam/v1/policies.platform.event.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Policy) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Policy) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeletePolicyRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeletePolicyRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
+func (x *DeletePolicyRequest) CloudEventsRedact() interface{} {
+ return nil
+}
diff --git a/proto/platform/iam/v1/policies.platform.pb.go b/proto/platform/iam/v1/policies.platform.pb.go
new file mode 100644
index 00000000..d93a6671
--- /dev/null
+++ b/proto/platform/iam/v1/policies.platform.pb.go
@@ -0,0 +1,1027 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: policies.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type CreatePolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group UIDP path under which the new policy is associated.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Policy is the policy to create;
+ Policy *Policy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
+}
+
+func (x *CreatePolicyRequest) Reset() {
+ *x = CreatePolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreatePolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreatePolicyRequest) ProtoMessage() {}
+
+func (x *CreatePolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreatePolicyRequest.ProtoReflect.Descriptor instead.
+func (*CreatePolicyRequest) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CreatePolicyRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreatePolicyRequest) GetPolicy() *Policy {
+ if x != nil {
+ return x.Policy
+ }
+ return nil
+}
+
+type Policy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is identifier of this specific policy.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human readable name of policy.
+ // This field is populated from the document and any existing value will be ignored for Create/Update.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human readable description of policy.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // document, YAML encoded policy document.
+ Document string `protobuf:"bytes,4,opt,name=document,proto3" json:"document,omitempty"`
+ // created_at is the timestamp for when the policy was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // updated_at is the timestamp when the current version of the policy was last updated.
+ UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
+ // enforced_version contains information about the enforced version of this policy.
+ // When used as a return value, Policy.name, Policy.description, and Policy.document are all copies of
+ // the respective fields in enforced_version for backwards compatibility. enforced_version may be empty for
+ // legacy policies without versions.
+ // When used for Create or Update, set enforced_version.label to set an optional version label.
+ EnforcedVersion *PolicyVersion `protobuf:"bytes,7,opt,name=enforced_version,json=enforcedVersion,proto3" json:"enforced_version,omitempty"`
+}
+
+func (x *Policy) Reset() {
+ *x = Policy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Policy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Policy) ProtoMessage() {}
+
+func (x *Policy) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
+func (*Policy) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Policy) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Policy) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Policy) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Policy) GetDocument() string {
+ if x != nil {
+ return x.Document
+ }
+ return ""
+}
+
+func (x *Policy) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *Policy) GetUpdatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedAt
+ }
+ return nil
+}
+
+func (x *Policy) GetEnforcedVersion() *PolicyVersion {
+ if x != nil {
+ return x.EnforcedVersion
+ }
+ return nil
+}
+
+type PolicyAuthor struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the UID of the author identity.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // email is the email address of the author, if known.
+ Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
+}
+
+func (x *PolicyAuthor) Reset() {
+ *x = PolicyAuthor{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyAuthor) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyAuthor) ProtoMessage() {}
+
+func (x *PolicyAuthor) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyAuthor.ProtoReflect.Descriptor instead.
+func (*PolicyAuthor) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *PolicyAuthor) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *PolicyAuthor) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+type PolicyList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Policy `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *PolicyList) Reset() {
+ *x = PolicyList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyList) ProtoMessage() {}
+
+func (x *PolicyList) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyList.ProtoReflect.Descriptor instead.
+func (*PolicyList) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *PolicyList) GetItems() []*Policy {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type PolicyFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filers records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // name is the exact name of the record.
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *PolicyFilter) Reset() {
+ *x = PolicyFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyFilter) ProtoMessage() {}
+
+func (x *PolicyFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyFilter.ProtoReflect.Descriptor instead.
+func (*PolicyFilter) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *PolicyFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *PolicyFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *PolicyFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type DeletePolicyRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeletePolicyRequest) Reset() {
+ *x = DeletePolicyRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeletePolicyRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeletePolicyRequest) ProtoMessage() {}
+
+func (x *DeletePolicyRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeletePolicyRequest.ProtoReflect.Descriptor instead.
+func (*DeletePolicyRequest) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *DeletePolicyRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type PolicyVersion struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the identifier of this specific policy version.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human-readable name of policy.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human-readable description of policy.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // document, YAML encoded policy document.
+ Document string `protobuf:"bytes,4,opt,name=document,proto3" json:"document,omitempty"`
+ // author is information about the identity that created/updated this version of the policy, if known.
+ Author *PolicyAuthor `protobuf:"bytes,5,opt,name=author,proto3" json:"author,omitempty"`
+ // created_at is the timestamp from when this version was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // label is a human-readable identifier for this version of the policy.
+ Label string `protobuf:"bytes,7,opt,name=label,proto3" json:"label,omitempty"`
+}
+
+func (x *PolicyVersion) Reset() {
+ *x = PolicyVersion{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyVersion) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyVersion) ProtoMessage() {}
+
+func (x *PolicyVersion) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyVersion.ProtoReflect.Descriptor instead.
+func (*PolicyVersion) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *PolicyVersion) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *PolicyVersion) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *PolicyVersion) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *PolicyVersion) GetDocument() string {
+ if x != nil {
+ return x.Document
+ }
+ return ""
+}
+
+func (x *PolicyVersion) GetAuthor() *PolicyAuthor {
+ if x != nil {
+ return x.Author
+ }
+ return nil
+}
+
+func (x *PolicyVersion) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *PolicyVersion) GetLabel() string {
+ if x != nil {
+ return x.Label
+ }
+ return ""
+}
+
+type ActivateVersionRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // version_id is the identifier of the policy version to enforce.
+ VersionId string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
+}
+
+func (x *ActivateVersionRequest) Reset() {
+ *x = ActivateVersionRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ActivateVersionRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ActivateVersionRequest) ProtoMessage() {}
+
+func (x *ActivateVersionRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ActivateVersionRequest.ProtoReflect.Descriptor instead.
+func (*ActivateVersionRequest) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *ActivateVersionRequest) GetVersionId() string {
+ if x != nil {
+ return x.VersionId
+ }
+ return ""
+}
+
+type ListVersionsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // policy_id is the identifier of the policy to list versions of.
+ PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+}
+
+func (x *ListVersionsRequest) Reset() {
+ *x = ListVersionsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ListVersionsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListVersionsRequest) ProtoMessage() {}
+
+func (x *ListVersionsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListVersionsRequest.ProtoReflect.Descriptor instead.
+func (*ListVersionsRequest) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *ListVersionsRequest) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+type PolicyVersionList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*PolicyVersion `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *PolicyVersionList) Reset() {
+ *x = PolicyVersionList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policies_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyVersionList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyVersionList) ProtoMessage() {}
+
+func (x *PolicyVersionList) ProtoReflect() protoreflect.Message {
+ mi := &file_policies_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyVersionList.ProtoReflect.Descriptor instead.
+func (*PolicyVersionList) Descriptor() ([]byte, []int) {
+ return file_policies_platform_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *PolicyVersionList) GetItems() []*PolicyVersion {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+var File_policies_platform_proto protoreflect.FileDescriptor
+
+var file_policies_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x73, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xbb, 0x02,
+ 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+ 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a,
+ 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x0c, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
+ 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69,
+ 0x6c, 0x22, 0x43, 0x0a, 0x0a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6e, 0x0a, 0x0c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x81, 0x02, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,
+ 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x61, 0x75, 0x74,
+ 0x68, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
+ 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3f, 0x0a, 0x16, 0x41, 0x63, 0x74,
+ 0x69, 0x76, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
+ 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x13, 0x4c, 0x69,
+ 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0xd0, 0x08, 0x0a, 0x08, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xcd, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
+ 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa1, 0x06, 0xc2, 0xf0, 0x8e,
+ 0xfc, 0x0b, 0x33, 0x0a, 0x28, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x7a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x12, 0x12, 0x10, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xa3, 0x06,
+ 0x10, 0x01, 0x12, 0xb5, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
+ 0x70, 0x74, 0x79, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa4,
+ 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x33, 0x0a, 0x28, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xb4, 0x01, 0x0a, 0x06, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x1a,
+ 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa2, 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x33, 0x0a, 0x28,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x39, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa3, 0x06, 0x12, 0xe2, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69,
+ 0x76, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x7d, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa2, 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3d, 0x0a,
+ 0x32, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64,
+ 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6a, 0x0a, 0x22,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
+ 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x76, 0x31, 0x42, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_policies_platform_proto_rawDescOnce sync.Once
+ file_policies_platform_proto_rawDescData = file_policies_platform_proto_rawDesc
+)
+
+func file_policies_platform_proto_rawDescGZIP() []byte {
+ file_policies_platform_proto_rawDescOnce.Do(func() {
+ file_policies_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_policies_platform_proto_rawDescData)
+ })
+ return file_policies_platform_proto_rawDescData
+}
+
+var file_policies_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_policies_platform_proto_goTypes = []interface{}{
+ (*CreatePolicyRequest)(nil), // 0: chainguard.platform.iam.CreatePolicyRequest
+ (*Policy)(nil), // 1: chainguard.platform.iam.Policy
+ (*PolicyAuthor)(nil), // 2: chainguard.platform.iam.PolicyAuthor
+ (*PolicyList)(nil), // 3: chainguard.platform.iam.PolicyList
+ (*PolicyFilter)(nil), // 4: chainguard.platform.iam.PolicyFilter
+ (*DeletePolicyRequest)(nil), // 5: chainguard.platform.iam.DeletePolicyRequest
+ (*PolicyVersion)(nil), // 6: chainguard.platform.iam.PolicyVersion
+ (*ActivateVersionRequest)(nil), // 7: chainguard.platform.iam.ActivateVersionRequest
+ (*ListVersionsRequest)(nil), // 8: chainguard.platform.iam.ListVersionsRequest
+ (*PolicyVersionList)(nil), // 9: chainguard.platform.iam.PolicyVersionList
+ (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 11: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 12: google.protobuf.Empty
+}
+var file_policies_platform_proto_depIdxs = []int32{
+ 1, // 0: chainguard.platform.iam.CreatePolicyRequest.policy:type_name -> chainguard.platform.iam.Policy
+ 10, // 1: chainguard.platform.iam.Policy.created_at:type_name -> google.protobuf.Timestamp
+ 10, // 2: chainguard.platform.iam.Policy.updated_at:type_name -> google.protobuf.Timestamp
+ 6, // 3: chainguard.platform.iam.Policy.enforced_version:type_name -> chainguard.platform.iam.PolicyVersion
+ 1, // 4: chainguard.platform.iam.PolicyList.items:type_name -> chainguard.platform.iam.Policy
+ 11, // 5: chainguard.platform.iam.PolicyFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 2, // 6: chainguard.platform.iam.PolicyVersion.author:type_name -> chainguard.platform.iam.PolicyAuthor
+ 10, // 7: chainguard.platform.iam.PolicyVersion.created_at:type_name -> google.protobuf.Timestamp
+ 6, // 8: chainguard.platform.iam.PolicyVersionList.items:type_name -> chainguard.platform.iam.PolicyVersion
+ 0, // 9: chainguard.platform.iam.Policies.Create:input_type -> chainguard.platform.iam.CreatePolicyRequest
+ 4, // 10: chainguard.platform.iam.Policies.List:input_type -> chainguard.platform.iam.PolicyFilter
+ 5, // 11: chainguard.platform.iam.Policies.Delete:input_type -> chainguard.platform.iam.DeletePolicyRequest
+ 1, // 12: chainguard.platform.iam.Policies.Update:input_type -> chainguard.platform.iam.Policy
+ 8, // 13: chainguard.platform.iam.Policies.ListVersions:input_type -> chainguard.platform.iam.ListVersionsRequest
+ 7, // 14: chainguard.platform.iam.Policies.ActivateVersion:input_type -> chainguard.platform.iam.ActivateVersionRequest
+ 1, // 15: chainguard.platform.iam.Policies.Create:output_type -> chainguard.platform.iam.Policy
+ 3, // 16: chainguard.platform.iam.Policies.List:output_type -> chainguard.platform.iam.PolicyList
+ 12, // 17: chainguard.platform.iam.Policies.Delete:output_type -> google.protobuf.Empty
+ 1, // 18: chainguard.platform.iam.Policies.Update:output_type -> chainguard.platform.iam.Policy
+ 9, // 19: chainguard.platform.iam.Policies.ListVersions:output_type -> chainguard.platform.iam.PolicyVersionList
+ 1, // 20: chainguard.platform.iam.Policies.ActivateVersion:output_type -> chainguard.platform.iam.Policy
+ 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_policies_platform_proto_init() }
+func file_policies_platform_proto_init() {
+ if File_policies_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_policies_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreatePolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Policy); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyAuthor); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeletePolicyRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyVersion); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ActivateVersionRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListVersionsRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policies_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyVersionList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_policies_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 10,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_policies_platform_proto_goTypes,
+ DependencyIndexes: file_policies_platform_proto_depIdxs,
+ MessageInfos: file_policies_platform_proto_msgTypes,
+ }.Build()
+ File_policies_platform_proto = out.File
+ file_policies_platform_proto_rawDesc = nil
+ file_policies_platform_proto_goTypes = nil
+ file_policies_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/policies.platform.pb.gw.go b/proto/platform/iam/v1/policies.platform.pb.gw.go
new file mode 100644
index 00000000..2ac936c3
--- /dev/null
+++ b/proto/platform/iam/v1/policies.platform.pb.gw.go
@@ -0,0 +1,708 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: policies.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Policies_Create_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreatePolicyRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Policy); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_Create_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreatePolicyRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Policy); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Policies_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Policies_List_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PolicyFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Policies_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_List_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PolicyFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Policies_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Policies_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeletePolicyRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeletePolicyRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Policies_Update_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Policy
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_Update_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Policy
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Policies_ListVersions_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ListVersionsRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["policy_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "policy_id")
+ }
+
+ protoReq.PolicyId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "policy_id", err)
+ }
+
+ msg, err := client.ListVersions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_ListVersions_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ListVersionsRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["policy_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "policy_id")
+ }
+
+ protoReq.PolicyId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "policy_id", err)
+ }
+
+ msg, err := server.ListVersions(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Policies_ActivateVersion_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ActivateVersionRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["version_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "version_id")
+ }
+
+ protoReq.VersionId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_id", err)
+ }
+
+ msg, err := client.ActivateVersion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Policies_ActivateVersion_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ActivateVersionRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["version_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "version_id")
+ }
+
+ protoReq.VersionId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_id", err)
+ }
+
+ msg, err := server.ActivateVersion(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterPoliciesHandlerServer registers the http handlers for service Policies to "mux".
+// UnaryRPC :call PoliciesServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPoliciesHandlerFromEndpoint instead.
+func RegisterPoliciesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PoliciesServer) error {
+
+ mux.Handle("POST", pattern_Policies_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Create", runtime.WithHTTPPathPattern("/iam/v1/policies/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Policies_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/List", runtime.WithHTTPPathPattern("/iam/v1/policies"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Policies_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Delete", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Policies_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Update", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Policies_ListVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ListVersions", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{policy_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_ListVersions_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_ListVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Policies_ActivateVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ActivateVersion", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{version_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Policies_ActivateVersion_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_ActivateVersion_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterPoliciesHandlerFromEndpoint is same as RegisterPoliciesHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterPoliciesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterPoliciesHandler(ctx, mux, conn)
+}
+
+// RegisterPoliciesHandler registers the http handlers for service Policies to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterPoliciesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterPoliciesHandlerClient(ctx, mux, NewPoliciesClient(conn))
+}
+
+// RegisterPoliciesHandlerClient registers the http handlers for service Policies
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PoliciesClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PoliciesClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "PoliciesClient" to call the correct interceptors.
+func RegisterPoliciesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PoliciesClient) error {
+
+ mux.Handle("POST", pattern_Policies_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Create", runtime.WithHTTPPathPattern("/iam/v1/policies/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Policies_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/List", runtime.WithHTTPPathPattern("/iam/v1/policies"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Policies_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Delete", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Policies_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Update", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Policies_ListVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ListVersions", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{policy_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_ListVersions_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_ListVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Policies_ActivateVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ActivateVersion", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{version_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Policies_ActivateVersion_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Policies_ActivateVersion_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Policies_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "parent_id"}, ""))
+
+ pattern_Policies_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "policies"}, ""))
+
+ pattern_Policies_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "id"}, ""))
+
+ pattern_Policies_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "id"}, ""))
+
+ pattern_Policies_ListVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policyVersions", "policy_id"}, ""))
+
+ pattern_Policies_ActivateVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policyVersions", "version_id"}, ""))
+)
+
+var (
+ forward_Policies_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Policies_List_0 = runtime.ForwardResponseMessage
+
+ forward_Policies_Delete_0 = runtime.ForwardResponseMessage
+
+ forward_Policies_Update_0 = runtime.ForwardResponseMessage
+
+ forward_Policies_ListVersions_0 = runtime.ForwardResponseMessage
+
+ forward_Policies_ActivateVersion_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/policies.platform.proto b/proto/platform/iam/v1/policies.platform.proto
new file mode 100644
index 00000000..e7f42222
--- /dev/null
+++ b/proto/platform/iam/v1/policies.platform.proto
@@ -0,0 +1,208 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMPoliciesProto";
+
+package chainguard.platform.iam;
+
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Policies {
+ rpc Create(CreatePolicyRequest) returns (Policy) {
+ option (google.api.http) = {
+ post: "/iam/v1/policies/{parent_id=**}"
+ body: "policy"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.policy.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(PolicyFilter) returns (PolicyList) {
+ option (google.api.http) = {
+ get: "/iam/v1/policies"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeletePolicyRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/policies/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.policy.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(Policy) returns (Policy) {
+ option (google.api.http) = {
+ put: "/iam/v1/policies/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.policy.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc ListVersions(ListVersionsRequest) returns (PolicyVersionList) {
+ option (google.api.http) = {
+ get: "/iam/v1/policyVersions/{policy_id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_LIST]
+ }
+ };
+ }
+
+ rpc ActivateVersion(ActivateVersionRequest) returns (Policy) {
+ option (google.api.http) = {
+ post: "/iam/v1/policyVersions/{version_id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_POLICY_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.policy.version.activated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message CreatePolicyRequest {
+ // parent_id, The Group UIDP path under which the new policy is associated.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // Policy is the policy to create;
+ Policy policy = 2;
+}
+
+message Policy {
+ // id is identifier of this specific policy.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // name, human readable name of policy.
+ // This field is populated from the document and any existing value will be ignored for Create/Update.
+ string name = 2;
+
+ // description, human readable description of policy.
+ string description = 3;
+
+ // document, YAML encoded policy document.
+ string document = 4;
+
+ // created_at is the timestamp for when the policy was created.
+ google.protobuf.Timestamp created_at = 5;
+
+ // updated_at is the timestamp when the current version of the policy was last updated.
+ google.protobuf.Timestamp updated_at = 6;
+
+ // enforced_version contains information about the enforced version of this policy.
+ // When used as a return value, Policy.name, Policy.description, and Policy.document are all copies of
+ // the respective fields in enforced_version for backwards compatibility. enforced_version may be empty for
+ // legacy policies without versions.
+ // When used for Create or Update, set enforced_version.label to set an optional version label.
+ PolicyVersion enforced_version = 7;
+}
+
+message PolicyAuthor {
+ // id is the UID of the author identity.
+ string id = 1;
+
+ // email is the email address of the author, if known.
+ string email = 2;
+}
+
+message PolicyList {
+ repeated Policy items = 1;
+}
+
+message PolicyFilter {
+ // id is the exact UIDP of the record.
+ string id = 1;
+
+ // uidp filers records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 2;
+
+ // name is the exact name of the record.
+ string name = 3;
+}
+
+message DeletePolicyRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message PolicyVersion {
+ // id is the identifier of this specific policy version.
+ string id = 1;
+
+ // name, human-readable name of policy.
+ string name = 2;
+
+ // description, human-readable description of policy.
+ string description = 3;
+
+ // document, YAML encoded policy document.
+ string document = 4;
+
+ // author is information about the identity that created/updated this version of the policy, if known.
+ PolicyAuthor author = 5;
+
+ // created_at is the timestamp from when this version was created.
+ google.protobuf.Timestamp created_at = 6;
+
+ // label is a human-readable identifier for this version of the policy.
+ string label = 7;
+}
+
+message ActivateVersionRequest {
+ // version_id is the identifier of the policy version to enforce.
+ string version_id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message ListVersionsRequest {
+ // policy_id is the identifier of the policy to list versions of.
+ string policy_id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message PolicyVersionList {
+ repeated PolicyVersion items = 1;
+}
+
diff --git a/proto/platform/iam/v1/policies.platform_grpc.pb.go b/proto/platform/iam/v1/policies.platform_grpc.pb.go
new file mode 100644
index 00000000..94a15fb1
--- /dev/null
+++ b/proto/platform/iam/v1/policies.platform_grpc.pb.go
@@ -0,0 +1,295 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: policies.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Policies_Create_FullMethodName = "/chainguard.platform.iam.Policies/Create"
+ Policies_List_FullMethodName = "/chainguard.platform.iam.Policies/List"
+ Policies_Delete_FullMethodName = "/chainguard.platform.iam.Policies/Delete"
+ Policies_Update_FullMethodName = "/chainguard.platform.iam.Policies/Update"
+ Policies_ListVersions_FullMethodName = "/chainguard.platform.iam.Policies/ListVersions"
+ Policies_ActivateVersion_FullMethodName = "/chainguard.platform.iam.Policies/ActivateVersion"
+)
+
+// PoliciesClient is the client API for Policies service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type PoliciesClient interface {
+ Create(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*Policy, error)
+ List(ctx context.Context, in *PolicyFilter, opts ...grpc.CallOption) (*PolicyList, error)
+ Delete(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Update(ctx context.Context, in *Policy, opts ...grpc.CallOption) (*Policy, error)
+ ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*PolicyVersionList, error)
+ ActivateVersion(ctx context.Context, in *ActivateVersionRequest, opts ...grpc.CallOption) (*Policy, error)
+}
+
+type policiesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewPoliciesClient(cc grpc.ClientConnInterface) PoliciesClient {
+ return &policiesClient{cc}
+}
+
+func (c *policiesClient) Create(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*Policy, error) {
+ out := new(Policy)
+ err := c.cc.Invoke(ctx, Policies_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *policiesClient) List(ctx context.Context, in *PolicyFilter, opts ...grpc.CallOption) (*PolicyList, error) {
+ out := new(PolicyList)
+ err := c.cc.Invoke(ctx, Policies_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *policiesClient) Delete(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Policies_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *policiesClient) Update(ctx context.Context, in *Policy, opts ...grpc.CallOption) (*Policy, error) {
+ out := new(Policy)
+ err := c.cc.Invoke(ctx, Policies_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *policiesClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*PolicyVersionList, error) {
+ out := new(PolicyVersionList)
+ err := c.cc.Invoke(ctx, Policies_ListVersions_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *policiesClient) ActivateVersion(ctx context.Context, in *ActivateVersionRequest, opts ...grpc.CallOption) (*Policy, error) {
+ out := new(Policy)
+ err := c.cc.Invoke(ctx, Policies_ActivateVersion_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// PoliciesServer is the server API for Policies service.
+// All implementations must embed UnimplementedPoliciesServer
+// for forward compatibility
+type PoliciesServer interface {
+ Create(context.Context, *CreatePolicyRequest) (*Policy, error)
+ List(context.Context, *PolicyFilter) (*PolicyList, error)
+ Delete(context.Context, *DeletePolicyRequest) (*emptypb.Empty, error)
+ Update(context.Context, *Policy) (*Policy, error)
+ ListVersions(context.Context, *ListVersionsRequest) (*PolicyVersionList, error)
+ ActivateVersion(context.Context, *ActivateVersionRequest) (*Policy, error)
+ mustEmbedUnimplementedPoliciesServer()
+}
+
+// UnimplementedPoliciesServer must be embedded to have forward compatible implementations.
+type UnimplementedPoliciesServer struct {
+}
+
+func (UnimplementedPoliciesServer) Create(context.Context, *CreatePolicyRequest) (*Policy, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedPoliciesServer) List(context.Context, *PolicyFilter) (*PolicyList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedPoliciesServer) Delete(context.Context, *DeletePolicyRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedPoliciesServer) Update(context.Context, *Policy) (*Policy, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedPoliciesServer) ListVersions(context.Context, *ListVersionsRequest) (*PolicyVersionList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListVersions not implemented")
+}
+func (UnimplementedPoliciesServer) ActivateVersion(context.Context, *ActivateVersionRequest) (*Policy, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ActivateVersion not implemented")
+}
+func (UnimplementedPoliciesServer) mustEmbedUnimplementedPoliciesServer() {}
+
+// UnsafePoliciesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to PoliciesServer will
+// result in compilation errors.
+type UnsafePoliciesServer interface {
+ mustEmbedUnimplementedPoliciesServer()
+}
+
+func RegisterPoliciesServer(s grpc.ServiceRegistrar, srv PoliciesServer) {
+ s.RegisterService(&Policies_ServiceDesc, srv)
+}
+
+func _Policies_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreatePolicyRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).Create(ctx, req.(*CreatePolicyRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Policies_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PolicyFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).List(ctx, req.(*PolicyFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Policies_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePolicyRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).Delete(ctx, req.(*DeletePolicyRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Policies_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Policy)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).Update(ctx, req.(*Policy))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Policies_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListVersionsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).ListVersions(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_ListVersions_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).ListVersions(ctx, req.(*ListVersionsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Policies_ActivateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ActivateVersionRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PoliciesServer).ActivateVersion(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Policies_ActivateVersion_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PoliciesServer).ActivateVersion(ctx, req.(*ActivateVersionRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Policies_ServiceDesc is the grpc.ServiceDesc for Policies service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Policies_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.Policies",
+ HandlerType: (*PoliciesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Policies_Create_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Policies_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Policies_Delete_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _Policies_Update_Handler,
+ },
+ {
+ MethodName: "ListVersions",
+ Handler: _Policies_ListVersions_Handler,
+ },
+ {
+ MethodName: "ActivateVersion",
+ Handler: _Policies_ActivateVersion_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "policies.platform.proto",
+}
diff --git a/proto/platform/iam/v1/role.platform.event.go b/proto/platform/iam/v1/role.platform.event.go
new file mode 100644
index 00000000..489e240f
--- /dev/null
+++ b/proto/platform/iam/v1/role.platform.event.go
@@ -0,0 +1,23 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import "chainguard.dev/sdk/uidp"
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Role) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Role) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/role.platform.pb.go b/proto/platform/iam/v1/role.platform.pb.go
new file mode 100644
index 00000000..46241bb2
--- /dev/null
+++ b/proto/platform/iam/v1/role.platform.pb.go
@@ -0,0 +1,540 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: role.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Role struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Group path under which this Role resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human readable name of group.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human readable description of group.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // capabilities, human readable list of capabilities supported by the group.
+ Capabilities []string `protobuf:"bytes,4,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
+}
+
+func (x *Role) Reset() {
+ *x = Role{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Role) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Role) ProtoMessage() {}
+
+func (x *Role) ProtoReflect() protoreflect.Message {
+ mi := &file_role_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Role.ProtoReflect.Descriptor instead.
+func (*Role) Descriptor() ([]byte, []int) {
+ return file_role_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Role) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Role) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Role) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Role) GetCapabilities() []string {
+ if x != nil {
+ return x.Capabilities
+ }
+ return nil
+}
+
+type RoleList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Role `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RoleList) Reset() {
+ *x = RoleList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleList) ProtoMessage() {}
+
+func (x *RoleList) ProtoReflect() protoreflect.Message {
+ mi := &file_role_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleList.ProtoReflect.Descriptor instead.
+func (*RoleList) Descriptor() ([]byte, []int) {
+ return file_role_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RoleList) GetItems() []*Role {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type RoleFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name is the exact name of the record
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // parent is the exact UIDP of the parent, or / for root
+ Parent string `protobuf:"bytes,3,opt,name=parent,proto3" json:"parent,omitempty"`
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,4,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *RoleFilter) Reset() {
+ *x = RoleFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleFilter) ProtoMessage() {}
+
+func (x *RoleFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_role_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleFilter.ProtoReflect.Descriptor instead.
+func (*RoleFilter) Descriptor() ([]byte, []int) {
+ return file_role_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *RoleFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RoleFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *RoleFilter) GetParent() string {
+ if x != nil {
+ return x.Parent
+ }
+ return ""
+}
+
+func (x *RoleFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+type CreateRoleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group UIDP path under which the new Role resides.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Role to create.
+ Role *Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *CreateRoleRequest) Reset() {
+ *x = CreateRoleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateRoleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateRoleRequest) ProtoMessage() {}
+
+func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_role_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead.
+func (*CreateRoleRequest) Descriptor() ([]byte, []int) {
+ return file_role_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *CreateRoleRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateRoleRequest) GetRole() *Role {
+ if x != nil {
+ return x.Role
+ }
+ return nil
+}
+
+type DeleteRoleRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteRoleRequest) Reset() {
+ *x = DeleteRoleRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRoleRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRoleRequest) ProtoMessage() {}
+
+func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_role_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRoleRequest) Descriptor() ([]byte, []int) {
+ return file_role_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteRoleRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+var File_role_platform_proto protoreflect.FileDescriptor
+
+var file_role_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d,
+ 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x78, 0x0a, 0x04, 0x52, 0x6f, 0x6c,
+ 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x69, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x52, 0x6f, 0x6c, 0x65, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
+ 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x6b, 0x0a, 0x11, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
+ 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0xf9, 0x03, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12,
+ 0x8b, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1c, 0x2f,
+ 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x04, 0x72, 0x6f, 0x6c,
+ 0x65, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xad, 0x02, 0x12, 0x74, 0x0a,
+ 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f,
+ 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64,
+ 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0xae, 0x02, 0x12, 0x73, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08,
+ 0x12, 0x06, 0x0a, 0x02, 0xaf, 0x02, 0x10, 0x01, 0x12, 0x77, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xb0,
+ 0x02, 0x42, 0x66, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
+ 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f,
+ 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
+}
+
+var (
+ file_role_platform_proto_rawDescOnce sync.Once
+ file_role_platform_proto_rawDescData = file_role_platform_proto_rawDesc
+)
+
+func file_role_platform_proto_rawDescGZIP() []byte {
+ file_role_platform_proto_rawDescOnce.Do(func() {
+ file_role_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_role_platform_proto_rawDescData)
+ })
+ return file_role_platform_proto_rawDescData
+}
+
+var file_role_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_role_platform_proto_goTypes = []interface{}{
+ (*Role)(nil), // 0: chainguard.platform.iam.Role
+ (*RoleList)(nil), // 1: chainguard.platform.iam.RoleList
+ (*RoleFilter)(nil), // 2: chainguard.platform.iam.RoleFilter
+ (*CreateRoleRequest)(nil), // 3: chainguard.platform.iam.CreateRoleRequest
+ (*DeleteRoleRequest)(nil), // 4: chainguard.platform.iam.DeleteRoleRequest
+ (*v1.UIDPFilter)(nil), // 5: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 6: google.protobuf.Empty
+}
+var file_role_platform_proto_depIdxs = []int32{
+ 0, // 0: chainguard.platform.iam.RoleList.items:type_name -> chainguard.platform.iam.Role
+ 5, // 1: chainguard.platform.iam.RoleFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 2: chainguard.platform.iam.CreateRoleRequest.role:type_name -> chainguard.platform.iam.Role
+ 3, // 3: chainguard.platform.iam.Roles.Create:input_type -> chainguard.platform.iam.CreateRoleRequest
+ 0, // 4: chainguard.platform.iam.Roles.Update:input_type -> chainguard.platform.iam.Role
+ 2, // 5: chainguard.platform.iam.Roles.List:input_type -> chainguard.platform.iam.RoleFilter
+ 4, // 6: chainguard.platform.iam.Roles.Delete:input_type -> chainguard.platform.iam.DeleteRoleRequest
+ 0, // 7: chainguard.platform.iam.Roles.Create:output_type -> chainguard.platform.iam.Role
+ 0, // 8: chainguard.platform.iam.Roles.Update:output_type -> chainguard.platform.iam.Role
+ 1, // 9: chainguard.platform.iam.Roles.List:output_type -> chainguard.platform.iam.RoleList
+ 6, // 10: chainguard.platform.iam.Roles.Delete:output_type -> google.protobuf.Empty
+ 7, // [7:11] is the sub-list for method output_type
+ 3, // [3:7] 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_role_platform_proto_init() }
+func file_role_platform_proto_init() {
+ if File_role_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_role_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Role); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateRoleRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRoleRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_role_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 5,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_role_platform_proto_goTypes,
+ DependencyIndexes: file_role_platform_proto_depIdxs,
+ MessageInfos: file_role_platform_proto_msgTypes,
+ }.Build()
+ File_role_platform_proto = out.File
+ file_role_platform_proto_rawDesc = nil
+ file_role_platform_proto_goTypes = nil
+ file_role_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/role.platform.pb.gw.go b/proto/platform/iam/v1/role.platform.pb.gw.go
new file mode 100644
index 00000000..b4bb5afa
--- /dev/null
+++ b/proto/platform/iam/v1/role.platform.pb.gw.go
@@ -0,0 +1,506 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: role.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Roles_Create_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRoleRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Role); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Roles_Create_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRoleRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Role); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Roles_Update_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Role
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Roles_Update_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Role
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Roles_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Roles_List_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Roles_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Roles_List_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Roles_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Roles_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client RolesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRoleRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Roles_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server RolesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRoleRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterRolesHandlerServer registers the http handlers for service Roles to "mux".
+// UnaryRPC :call RolesServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRolesHandlerFromEndpoint instead.
+func RegisterRolesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RolesServer) error {
+
+ mux.Handle("POST", pattern_Roles_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Create", runtime.WithHTTPPathPattern("/iam/v1/roles/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Roles_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Roles_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Update", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Roles_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Roles_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/List", runtime.WithHTTPPathPattern("/iam/v1/roles"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Roles_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Roles_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Delete", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Roles_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterRolesHandlerFromEndpoint is same as RegisterRolesHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterRolesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterRolesHandler(ctx, mux, conn)
+}
+
+// RegisterRolesHandler registers the http handlers for service Roles to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterRolesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterRolesHandlerClient(ctx, mux, NewRolesClient(conn))
+}
+
+// RegisterRolesHandlerClient registers the http handlers for service Roles
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RolesClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RolesClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "RolesClient" to call the correct interceptors.
+func RegisterRolesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RolesClient) error {
+
+ mux.Handle("POST", pattern_Roles_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Create", runtime.WithHTTPPathPattern("/iam/v1/roles/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Roles_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Roles_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Update", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Roles_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Roles_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/List", runtime.WithHTTPPathPattern("/iam/v1/roles"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Roles_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Roles_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Roles/Delete", runtime.WithHTTPPathPattern("/iam/v1/roles/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Roles_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Roles_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Roles_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "parent_id"}, ""))
+
+ pattern_Roles_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "id"}, ""))
+
+ pattern_Roles_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "roles"}, ""))
+
+ pattern_Roles_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "roles", "id"}, ""))
+)
+
+var (
+ forward_Roles_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Roles_Update_0 = runtime.ForwardResponseMessage
+
+ forward_Roles_List_0 = runtime.ForwardResponseMessage
+
+ forward_Roles_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/role.platform.proto b/proto/platform/iam/v1/role.platform.proto
new file mode 100644
index 00000000..7ff18fb4
--- /dev/null
+++ b/proto/platform/iam/v1/role.platform.proto
@@ -0,0 +1,100 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMRoleProto";
+
+package chainguard.platform.iam;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Roles {
+ rpc Create(CreateRoleRequest) returns (Role) {
+ option (google.api.http) = {
+ post: "/iam/v1/roles/{parent_id=**}"
+ body: "role"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLES_CREATE]
+ }
+ };
+ }
+
+ rpc Update(Role) returns (Role) {
+ option (google.api.http) = {
+ put: "/iam/v1/roles/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLES_UPDATE]
+ }
+ };
+ }
+
+ rpc List(RoleFilter) returns (RoleList) {
+ option (google.api.http) = {
+ get: "/iam/v1/roles"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLES_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteRoleRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/roles/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLES_DELETE]
+ }
+ };
+ }
+}
+
+message Role {
+ // id, The Group path under which this Role resides.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+ // name, human readable name of group.
+ string name = 2;
+ // description, human readable description of group.
+ string description = 3;
+ // capabilities, human readable list of capabilities supported by the group.
+ repeated string capabilities = 4;
+}
+
+message RoleList {
+ repeated Role items = 1;
+}
+
+message RoleFilter {
+ // id is the exact UIDP of the record.
+ string id = 1;
+ // name is the exact name of the record
+ string name = 2;
+ // parent is the exact UIDP of the parent, or / for root
+ string parent = 3;
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 4;
+}
+
+message CreateRoleRequest {
+ // parent_id, The Group UIDP path under which the new Role resides.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // Role to create.
+ Role role = 2;
+}
+
+message DeleteRoleRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
diff --git a/proto/platform/iam/v1/role.platform_grpc.pb.go b/proto/platform/iam/v1/role.platform_grpc.pb.go
new file mode 100644
index 00000000..c6456ef5
--- /dev/null
+++ b/proto/platform/iam/v1/role.platform_grpc.pb.go
@@ -0,0 +1,221 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: role.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Roles_Create_FullMethodName = "/chainguard.platform.iam.Roles/Create"
+ Roles_Update_FullMethodName = "/chainguard.platform.iam.Roles/Update"
+ Roles_List_FullMethodName = "/chainguard.platform.iam.Roles/List"
+ Roles_Delete_FullMethodName = "/chainguard.platform.iam.Roles/Delete"
+)
+
+// RolesClient is the client API for Roles service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RolesClient interface {
+ Create(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error)
+ Update(ctx context.Context, in *Role, opts ...grpc.CallOption) (*Role, error)
+ List(ctx context.Context, in *RoleFilter, opts ...grpc.CallOption) (*RoleList, error)
+ Delete(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type rolesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRolesClient(cc grpc.ClientConnInterface) RolesClient {
+ return &rolesClient{cc}
+}
+
+func (c *rolesClient) Create(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error) {
+ out := new(Role)
+ err := c.cc.Invoke(ctx, Roles_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *rolesClient) Update(ctx context.Context, in *Role, opts ...grpc.CallOption) (*Role, error) {
+ out := new(Role)
+ err := c.cc.Invoke(ctx, Roles_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *rolesClient) List(ctx context.Context, in *RoleFilter, opts ...grpc.CallOption) (*RoleList, error) {
+ out := new(RoleList)
+ err := c.cc.Invoke(ctx, Roles_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *rolesClient) Delete(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Roles_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RolesServer is the server API for Roles service.
+// All implementations must embed UnimplementedRolesServer
+// for forward compatibility
+type RolesServer interface {
+ Create(context.Context, *CreateRoleRequest) (*Role, error)
+ Update(context.Context, *Role) (*Role, error)
+ List(context.Context, *RoleFilter) (*RoleList, error)
+ Delete(context.Context, *DeleteRoleRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedRolesServer()
+}
+
+// UnimplementedRolesServer must be embedded to have forward compatible implementations.
+type UnimplementedRolesServer struct {
+}
+
+func (UnimplementedRolesServer) Create(context.Context, *CreateRoleRequest) (*Role, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedRolesServer) Update(context.Context, *Role) (*Role, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedRolesServer) List(context.Context, *RoleFilter) (*RoleList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedRolesServer) Delete(context.Context, *DeleteRoleRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedRolesServer) mustEmbedUnimplementedRolesServer() {}
+
+// UnsafeRolesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RolesServer will
+// result in compilation errors.
+type UnsafeRolesServer interface {
+ mustEmbedUnimplementedRolesServer()
+}
+
+func RegisterRolesServer(s grpc.ServiceRegistrar, srv RolesServer) {
+ s.RegisterService(&Roles_ServiceDesc, srv)
+}
+
+func _Roles_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateRoleRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RolesServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Roles_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RolesServer).Create(ctx, req.(*CreateRoleRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Roles_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Role)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RolesServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Roles_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RolesServer).Update(ctx, req.(*Role))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Roles_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RoleFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RolesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Roles_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RolesServer).List(ctx, req.(*RoleFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Roles_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRoleRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RolesServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Roles_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RolesServer).Delete(ctx, req.(*DeleteRoleRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Roles_ServiceDesc is the grpc.ServiceDesc for Roles service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Roles_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.Roles",
+ HandlerType: (*RolesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Roles_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _Roles_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Roles_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Roles_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "role.platform.proto",
+}
diff --git a/proto/platform/iam/v1/role_binding.platform.event.go b/proto/platform/iam/v1/role_binding.platform.event.go
new file mode 100644
index 00000000..1e6eba55
--- /dev/null
+++ b/proto/platform/iam/v1/role_binding.platform.event.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import "chainguard.dev/sdk/uidp"
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *RoleBinding) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *RoleBinding) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteRoleBindingRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteRoleBindingRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
new file mode 100644
index 00000000..22969923
--- /dev/null
+++ b/proto/platform/iam/v1/role_binding.platform.pb.go
@@ -0,0 +1,687 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: role_binding.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type RoleBinding struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, the UID of this role binding.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // identity, UID of the Identity to bind.
+ Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
+ // group, UIDP of the group to bind. This field is ignored and will be removed
+ // in the future. The group is always the parent of the UIDP.
+ //
+ // Deprecated: Do not use.
+ Group string `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"`
+ // role, UIDP of the Role to bind
+ Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+}
+
+func (x *RoleBinding) Reset() {
+ *x = RoleBinding{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleBinding) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleBinding) ProtoMessage() {}
+
+func (x *RoleBinding) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleBinding.ProtoReflect.Descriptor instead.
+func (*RoleBinding) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *RoleBinding) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RoleBinding) GetIdentity() string {
+ if x != nil {
+ return x.Identity
+ }
+ return ""
+}
+
+// Deprecated: Do not use.
+func (x *RoleBinding) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *RoleBinding) GetRole() string {
+ if x != nil {
+ return x.Role
+ }
+ return ""
+}
+
+type RoleBindingList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*RoleBindingList_Binding `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RoleBindingList) Reset() {
+ *x = RoleBindingList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleBindingList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleBindingList) ProtoMessage() {}
+
+func (x *RoleBindingList) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleBindingList.ProtoReflect.Descriptor instead.
+func (*RoleBindingList) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RoleBindingList) GetItems() []*RoleBindingList_Binding {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type RoleBindingFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *RoleBindingFilter) Reset() {
+ *x = RoleBindingFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleBindingFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleBindingFilter) ProtoMessage() {}
+
+func (x *RoleBindingFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleBindingFilter.ProtoReflect.Descriptor instead.
+func (*RoleBindingFilter) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *RoleBindingFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RoleBindingFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+type CreateRoleBindingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent, The Group UIDP path under which the new RoleBinding resides.
+ Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+ // RoleBinding to create.
+ RoleBinding *RoleBinding `protobuf:"bytes,2,opt,name=role_binding,json=roleBinding,proto3" json:"role_binding,omitempty"`
+}
+
+func (x *CreateRoleBindingRequest) Reset() {
+ *x = CreateRoleBindingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateRoleBindingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateRoleBindingRequest) ProtoMessage() {}
+
+func (x *CreateRoleBindingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateRoleBindingRequest.ProtoReflect.Descriptor instead.
+func (*CreateRoleBindingRequest) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *CreateRoleBindingRequest) GetParent() string {
+ if x != nil {
+ return x.Parent
+ }
+ return ""
+}
+
+func (x *CreateRoleBindingRequest) GetRoleBinding() *RoleBinding {
+ if x != nil {
+ return x.RoleBinding
+ }
+ return nil
+}
+
+type DeleteRoleBindingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteRoleBindingRequest) Reset() {
+ *x = DeleteRoleBindingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRoleBindingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRoleBindingRequest) ProtoMessage() {}
+
+func (x *DeleteRoleBindingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRoleBindingRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRoleBindingRequest) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteRoleBindingRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type RoleBindingList_Binding struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, the UID of this role binding.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // group of the bound role.
+ Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
+ // identity, UID of the Identity bound.
+ Identity string `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"`
+ // role of the bound identity.
+ Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+ // email of the bound identity.
+ Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
+ // ClaimMatch issuer of the bound identity.
+ ClaimMatchIssuer string `protobuf:"bytes,6,opt,name=claim_match_issuer,json=claimMatchIssuer,proto3" json:"claim_match_issuer,omitempty"`
+ // ClaimMatch subject of the bound identity.
+ ClaimMatchSubject string `protobuf:"bytes,7,opt,name=claim_match_subject,json=claimMatchSubject,proto3" json:"claim_match_subject,omitempty"`
+}
+
+func (x *RoleBindingList_Binding) Reset() {
+ *x = RoleBindingList_Binding{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_role_binding_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RoleBindingList_Binding) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoleBindingList_Binding) ProtoMessage() {}
+
+func (x *RoleBindingList_Binding) ProtoReflect() protoreflect.Message {
+ mi := &file_role_binding_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoleBindingList_Binding.ProtoReflect.Descriptor instead.
+func (*RoleBindingList_Binding) Descriptor() ([]byte, []int) {
+ return file_role_binding_platform_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *RoleBindingList_Binding) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RoleBindingList_Binding) GetGroup() *Group {
+ if x != nil {
+ return x.Group
+ }
+ return nil
+}
+
+func (x *RoleBindingList_Binding) GetIdentity() string {
+ if x != nil {
+ return x.Identity
+ }
+ return ""
+}
+
+func (x *RoleBindingList_Binding) GetRole() *Role {
+ if x != nil {
+ return x.Role
+ }
+ return nil
+}
+
+func (x *RoleBindingList_Binding) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+func (x *RoleBindingList_Binding) GetClaimMatchIssuer() string {
+ if x != nil {
+ return x.ClaimMatchIssuer
+ }
+ return ""
+}
+
+func (x *RoleBindingList_Binding) GetClaimMatchSubject() string {
+ if x != nil {
+ return x.ClaimMatchSubject
+ }
+ return ""
+}
+
+var File_role_binding_platform_proto protoreflect.FileDescriptor
+
+var file_role_binding_platform_proto_rawDesc = []byte{
+ 0x0a, 0x1b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61,
+ 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a,
+ 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xee, 0x02, 0x0a, 0x0f, 0x52, 0x6f, 0x6c, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+ 0x79, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6c,
+ 0x61, 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x61, 0x69,
+ 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a,
+ 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
+ 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
+ 0x02, 0x69, 0x64, 0x32, 0x93, 0x06, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
+ 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c,
+ 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x30, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x3a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e,
+ 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65,
+ 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a,
+ 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x1a, 0x1c, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03,
+ 0x10, 0x01, 0x12, 0xc4, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f,
+ 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e,
+ 0x2a, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x94, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39,
+ 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
+ 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42,
+ 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_role_binding_platform_proto_rawDescOnce sync.Once
+ file_role_binding_platform_proto_rawDescData = file_role_binding_platform_proto_rawDesc
+)
+
+func file_role_binding_platform_proto_rawDescGZIP() []byte {
+ file_role_binding_platform_proto_rawDescOnce.Do(func() {
+ file_role_binding_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_role_binding_platform_proto_rawDescData)
+ })
+ return file_role_binding_platform_proto_rawDescData
+}
+
+var file_role_binding_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_role_binding_platform_proto_goTypes = []interface{}{
+ (*RoleBinding)(nil), // 0: chainguard.platform.iam.RoleBinding
+ (*RoleBindingList)(nil), // 1: chainguard.platform.iam.RoleBindingList
+ (*RoleBindingFilter)(nil), // 2: chainguard.platform.iam.RoleBindingFilter
+ (*CreateRoleBindingRequest)(nil), // 3: chainguard.platform.iam.CreateRoleBindingRequest
+ (*DeleteRoleBindingRequest)(nil), // 4: chainguard.platform.iam.DeleteRoleBindingRequest
+ (*RoleBindingList_Binding)(nil), // 5: chainguard.platform.iam.RoleBindingList.Binding
+ (*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
+ (*Group)(nil), // 7: chainguard.platform.iam.Group
+ (*Role)(nil), // 8: chainguard.platform.iam.Role
+ (*emptypb.Empty)(nil), // 9: google.protobuf.Empty
+}
+var file_role_binding_platform_proto_depIdxs = []int32{
+ 5, // 0: chainguard.platform.iam.RoleBindingList.items:type_name -> chainguard.platform.iam.RoleBindingList.Binding
+ 6, // 1: chainguard.platform.iam.RoleBindingFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 2: chainguard.platform.iam.CreateRoleBindingRequest.role_binding:type_name -> chainguard.platform.iam.RoleBinding
+ 7, // 3: chainguard.platform.iam.RoleBindingList.Binding.group:type_name -> chainguard.platform.iam.Group
+ 8, // 4: chainguard.platform.iam.RoleBindingList.Binding.role:type_name -> chainguard.platform.iam.Role
+ 3, // 5: chainguard.platform.iam.RoleBindings.Create:input_type -> chainguard.platform.iam.CreateRoleBindingRequest
+ 0, // 6: chainguard.platform.iam.RoleBindings.Update:input_type -> chainguard.platform.iam.RoleBinding
+ 2, // 7: chainguard.platform.iam.RoleBindings.List:input_type -> chainguard.platform.iam.RoleBindingFilter
+ 4, // 8: chainguard.platform.iam.RoleBindings.Delete:input_type -> chainguard.platform.iam.DeleteRoleBindingRequest
+ 0, // 9: chainguard.platform.iam.RoleBindings.Create:output_type -> chainguard.platform.iam.RoleBinding
+ 0, // 10: chainguard.platform.iam.RoleBindings.Update:output_type -> chainguard.platform.iam.RoleBinding
+ 1, // 11: chainguard.platform.iam.RoleBindings.List:output_type -> chainguard.platform.iam.RoleBindingList
+ 9, // 12: chainguard.platform.iam.RoleBindings.Delete:output_type -> google.protobuf.Empty
+ 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_role_binding_platform_proto_init() }
+func file_role_binding_platform_proto_init() {
+ if File_role_binding_platform_proto != nil {
+ return
+ }
+ file_group_platform_proto_init()
+ file_role_platform_proto_init()
+ if !protoimpl.UnsafeEnabled {
+ file_role_binding_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleBinding); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_binding_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleBindingList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_binding_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleBindingFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_binding_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateRoleBindingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_binding_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRoleBindingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_role_binding_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RoleBindingList_Binding); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_role_binding_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_role_binding_platform_proto_goTypes,
+ DependencyIndexes: file_role_binding_platform_proto_depIdxs,
+ MessageInfos: file_role_binding_platform_proto_msgTypes,
+ }.Build()
+ File_role_binding_platform_proto = out.File
+ file_role_binding_platform_proto_rawDesc = nil
+ file_role_binding_platform_proto_goTypes = nil
+ file_role_binding_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.gw.go b/proto/platform/iam/v1/role_binding.platform.pb.gw.go
new file mode 100644
index 00000000..8d673504
--- /dev/null
+++ b/proto/platform/iam/v1/role_binding.platform.pb.gw.go
@@ -0,0 +1,506 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: role_binding.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_RoleBindings_Create_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRoleBindingRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.RoleBinding); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
+ }
+
+ protoReq.Parent, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_RoleBindings_Create_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRoleBindingRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.RoleBinding); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent")
+ }
+
+ protoReq.Parent, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_RoleBindings_Update_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleBinding
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_RoleBindings_Update_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleBinding
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_RoleBindings_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_RoleBindings_List_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleBindingFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RoleBindings_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_RoleBindings_List_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RoleBindingFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RoleBindings_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_RoleBindings_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client RoleBindingsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRoleBindingRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_RoleBindings_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server RoleBindingsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRoleBindingRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterRoleBindingsHandlerServer registers the http handlers for service RoleBindings to "mux".
+// UnaryRPC :call RoleBindingsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRoleBindingsHandlerFromEndpoint instead.
+func RegisterRoleBindingsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RoleBindingsServer) error {
+
+ mux.Handle("POST", pattern_RoleBindings_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Create", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{parent=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_RoleBindings_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_RoleBindings_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Update", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_RoleBindings_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_RoleBindings_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/List", runtime.WithHTTPPathPattern("/iam/v1/rolebindings"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_RoleBindings_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_RoleBindings_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Delete", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_RoleBindings_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterRoleBindingsHandlerFromEndpoint is same as RegisterRoleBindingsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterRoleBindingsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterRoleBindingsHandler(ctx, mux, conn)
+}
+
+// RegisterRoleBindingsHandler registers the http handlers for service RoleBindings to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterRoleBindingsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterRoleBindingsHandlerClient(ctx, mux, NewRoleBindingsClient(conn))
+}
+
+// RegisterRoleBindingsHandlerClient registers the http handlers for service RoleBindings
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RoleBindingsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RoleBindingsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "RoleBindingsClient" to call the correct interceptors.
+func RegisterRoleBindingsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RoleBindingsClient) error {
+
+ mux.Handle("POST", pattern_RoleBindings_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Create", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{parent=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_RoleBindings_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_RoleBindings_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Update", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_RoleBindings_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_RoleBindings_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/List", runtime.WithHTTPPathPattern("/iam/v1/rolebindings"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_RoleBindings_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_RoleBindings_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.RoleBindings/Delete", runtime.WithHTTPPathPattern("/iam/v1/rolebindings/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_RoleBindings_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_RoleBindings_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_RoleBindings_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "parent"}, ""))
+
+ pattern_RoleBindings_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "id"}, ""))
+
+ pattern_RoleBindings_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "rolebindings"}, ""))
+
+ pattern_RoleBindings_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "rolebindings", "id"}, ""))
+)
+
+var (
+ forward_RoleBindings_Create_0 = runtime.ForwardResponseMessage
+
+ forward_RoleBindings_Update_0 = runtime.ForwardResponseMessage
+
+ forward_RoleBindings_List_0 = runtime.ForwardResponseMessage
+
+ forward_RoleBindings_Delete_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/role_binding.platform.proto b/proto/platform/iam/v1/role_binding.platform.proto
new file mode 100644
index 00000000..9ee50f0d
--- /dev/null
+++ b/proto/platform/iam/v1/role_binding.platform.proto
@@ -0,0 +1,131 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMRoleBindingProto";
+
+package chainguard.platform.iam;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+import "group.platform.proto";
+import "role.platform.proto";
+
+service RoleBindings {
+ rpc Create(CreateRoleBindingRequest) returns (RoleBinding) {
+ option (google.api.http) = {
+ post: "/iam/v1/rolebindings/{parent=**}"
+ body: "role_binding"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLE_BINDINGS_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.rolebindings.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Update(RoleBinding) returns (RoleBinding) {
+ option (google.api.http) = {
+ put: "/iam/v1/rolebindings/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLE_BINDINGS_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.rolebindings.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc List(RoleBindingFilter) returns (RoleBindingList) {
+ option (google.api.http) = {
+ get: "/iam/v1/rolebindings"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLE_BINDINGS_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteRoleBindingRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/rolebindings/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_IAM_ROLE_BINDINGS_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.iam.rolebindings.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+}
+
+message RoleBinding {
+ // id, the UID of this role binding.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+ // identity, UID of the Identity to bind.
+ string identity = 2;
+ // group, UIDP of the group to bind. This field is ignored and will be removed
+ // in the future. The group is always the parent of the UIDP.
+ string group = 3 [deprecated = true];
+ // role, UIDP of the Role to bind
+ string role = 4;
+}
+
+message RoleBindingList {
+ message Binding {
+ // id, the UID of this role binding.
+ string id = 1;
+ // group of the bound role.
+ chainguard.platform.iam.Group group = 2;
+ // identity, UID of the Identity bound.
+ string identity = 3;
+ // role of the bound identity.
+ chainguard.platform.iam.Role role = 4;
+ // email of the bound identity.
+ string email = 5;
+ // ClaimMatch issuer of the bound identity.
+ string claim_match_issuer = 6;
+ // ClaimMatch subject of the bound identity.
+ string claim_match_subject = 7;
+ }
+ repeated Binding items = 1;
+}
+
+message RoleBindingFilter {
+ // id is the exact UID of the record.
+ string id = 1;
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 2;
+}
+
+message CreateRoleBindingRequest {
+ // parent, The Group UIDP path under which the new RoleBinding resides.
+ string parent = 1 [(chainguard.annotations.iam_scope) = true];
+ // RoleBinding to create.
+ RoleBinding role_binding = 2;
+}
+
+message DeleteRoleBindingRequest {
+ // id is the exact UID of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
diff --git a/proto/platform/iam/v1/role_binding.platform_grpc.pb.go b/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
new file mode 100644
index 00000000..2c8bbc27
--- /dev/null
+++ b/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
@@ -0,0 +1,221 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: role_binding.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ RoleBindings_Create_FullMethodName = "/chainguard.platform.iam.RoleBindings/Create"
+ RoleBindings_Update_FullMethodName = "/chainguard.platform.iam.RoleBindings/Update"
+ RoleBindings_List_FullMethodName = "/chainguard.platform.iam.RoleBindings/List"
+ RoleBindings_Delete_FullMethodName = "/chainguard.platform.iam.RoleBindings/Delete"
+)
+
+// RoleBindingsClient is the client API for RoleBindings service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RoleBindingsClient interface {
+ Create(ctx context.Context, in *CreateRoleBindingRequest, opts ...grpc.CallOption) (*RoleBinding, error)
+ Update(ctx context.Context, in *RoleBinding, opts ...grpc.CallOption) (*RoleBinding, error)
+ List(ctx context.Context, in *RoleBindingFilter, opts ...grpc.CallOption) (*RoleBindingList, error)
+ Delete(ctx context.Context, in *DeleteRoleBindingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type roleBindingsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRoleBindingsClient(cc grpc.ClientConnInterface) RoleBindingsClient {
+ return &roleBindingsClient{cc}
+}
+
+func (c *roleBindingsClient) Create(ctx context.Context, in *CreateRoleBindingRequest, opts ...grpc.CallOption) (*RoleBinding, error) {
+ out := new(RoleBinding)
+ err := c.cc.Invoke(ctx, RoleBindings_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *roleBindingsClient) Update(ctx context.Context, in *RoleBinding, opts ...grpc.CallOption) (*RoleBinding, error) {
+ out := new(RoleBinding)
+ err := c.cc.Invoke(ctx, RoleBindings_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *roleBindingsClient) List(ctx context.Context, in *RoleBindingFilter, opts ...grpc.CallOption) (*RoleBindingList, error) {
+ out := new(RoleBindingList)
+ err := c.cc.Invoke(ctx, RoleBindings_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *roleBindingsClient) Delete(ctx context.Context, in *DeleteRoleBindingRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, RoleBindings_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RoleBindingsServer is the server API for RoleBindings service.
+// All implementations must embed UnimplementedRoleBindingsServer
+// for forward compatibility
+type RoleBindingsServer interface {
+ Create(context.Context, *CreateRoleBindingRequest) (*RoleBinding, error)
+ Update(context.Context, *RoleBinding) (*RoleBinding, error)
+ List(context.Context, *RoleBindingFilter) (*RoleBindingList, error)
+ Delete(context.Context, *DeleteRoleBindingRequest) (*emptypb.Empty, error)
+ mustEmbedUnimplementedRoleBindingsServer()
+}
+
+// UnimplementedRoleBindingsServer must be embedded to have forward compatible implementations.
+type UnimplementedRoleBindingsServer struct {
+}
+
+func (UnimplementedRoleBindingsServer) Create(context.Context, *CreateRoleBindingRequest) (*RoleBinding, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedRoleBindingsServer) Update(context.Context, *RoleBinding) (*RoleBinding, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedRoleBindingsServer) List(context.Context, *RoleBindingFilter) (*RoleBindingList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedRoleBindingsServer) Delete(context.Context, *DeleteRoleBindingRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedRoleBindingsServer) mustEmbedUnimplementedRoleBindingsServer() {}
+
+// UnsafeRoleBindingsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RoleBindingsServer will
+// result in compilation errors.
+type UnsafeRoleBindingsServer interface {
+ mustEmbedUnimplementedRoleBindingsServer()
+}
+
+func RegisterRoleBindingsServer(s grpc.ServiceRegistrar, srv RoleBindingsServer) {
+ s.RegisterService(&RoleBindings_ServiceDesc, srv)
+}
+
+func _RoleBindings_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateRoleBindingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RoleBindingsServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RoleBindings_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RoleBindingsServer).Create(ctx, req.(*CreateRoleBindingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RoleBindings_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RoleBinding)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RoleBindingsServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RoleBindings_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RoleBindingsServer).Update(ctx, req.(*RoleBinding))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RoleBindings_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RoleBindingFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RoleBindingsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RoleBindings_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RoleBindingsServer).List(ctx, req.(*RoleBindingFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RoleBindings_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRoleBindingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RoleBindingsServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RoleBindings_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RoleBindingsServer).Delete(ctx, req.(*DeleteRoleBindingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// RoleBindings_ServiceDesc is the grpc.ServiceDesc for RoleBindings service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var RoleBindings_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.RoleBindings",
+ HandlerType: (*RoleBindingsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _RoleBindings_Create_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _RoleBindings_Update_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _RoleBindings_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _RoleBindings_Delete_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "role_binding.platform.proto",
+}
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.go b/proto/platform/iam/v1/sigstore.platform.pb.go
new file mode 100644
index 00000000..fda336a4
--- /dev/null
+++ b/proto/platform/iam/v1/sigstore.platform.pb.go
@@ -0,0 +1,803 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: sigstore.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type CreateSigstoreRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group UIDP path under which the new sigstore instance is associated.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Sigstore is the sigstore instance to create;
+ Sigstore *Sigstore `protobuf:"bytes,2,opt,name=sigstore,proto3" json:"sigstore,omitempty"`
+}
+
+func (x *CreateSigstoreRequest) Reset() {
+ *x = CreateSigstoreRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateSigstoreRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSigstoreRequest) ProtoMessage() {}
+
+func (x *CreateSigstoreRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateSigstoreRequest.ProtoReflect.Descriptor instead.
+func (*CreateSigstoreRequest) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CreateSigstoreRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateSigstoreRequest) GetSigstore() *Sigstore {
+ if x != nil {
+ return x.Sigstore
+ }
+ return nil
+}
+
+type Sigstore struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is identifier of this specific sigstore instance.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, human-readable name of the sigstore instance.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // description, human-readable description of the sigstore instance.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // certificate authority for this instance of sigstore
+ CertificateAuthority *CertificateAuthority `protobuf:"bytes,4,opt,name=certificate_authority,json=certificateAuthority,proto3" json:"certificate_authority,omitempty"`
+ // unique hostname of this sigstore instance
+ Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"`
+}
+
+func (x *Sigstore) Reset() {
+ *x = Sigstore{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Sigstore) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sigstore) ProtoMessage() {}
+
+func (x *Sigstore) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Sigstore.ProtoReflect.Descriptor instead.
+func (*Sigstore) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Sigstore) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Sigstore) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Sigstore) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Sigstore) GetCertificateAuthority() *CertificateAuthority {
+ if x != nil {
+ return x.CertificateAuthority
+ }
+ return nil
+}
+
+func (x *Sigstore) GetHostname() string {
+ if x != nil {
+ return x.Hostname
+ }
+ return ""
+}
+
+type SigstoreList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Sigstore `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *SigstoreList) Reset() {
+ *x = SigstoreList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SigstoreList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SigstoreList) ProtoMessage() {}
+
+func (x *SigstoreList) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SigstoreList.ProtoReflect.Descriptor instead.
+func (*SigstoreList) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SigstoreList) GetItems() []*Sigstore {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type SigstoreFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filers records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // name is the exact name of the record.
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *SigstoreFilter) Reset() {
+ *x = SigstoreFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SigstoreFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SigstoreFilter) ProtoMessage() {}
+
+func (x *SigstoreFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SigstoreFilter.ProtoReflect.Descriptor instead.
+func (*SigstoreFilter) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *SigstoreFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *SigstoreFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *SigstoreFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type DeleteSigstoreRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteSigstoreRequest) Reset() {
+ *x = DeleteSigstoreRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteSigstoreRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteSigstoreRequest) ProtoMessage() {}
+
+func (x *DeleteSigstoreRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteSigstoreRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSigstoreRequest) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *DeleteSigstoreRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type CertificateAuthority struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Ca:
+ //
+ // *CertificateAuthority_KmsCa
+ // *CertificateAuthority_GoogleCa
+ Ca isCertificateAuthority_Ca `protobuf_oneof:"ca"`
+}
+
+func (x *CertificateAuthority) Reset() {
+ *x = CertificateAuthority{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CertificateAuthority) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CertificateAuthority) ProtoMessage() {}
+
+func (x *CertificateAuthority) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CertificateAuthority.ProtoReflect.Descriptor instead.
+func (*CertificateAuthority) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (m *CertificateAuthority) GetCa() isCertificateAuthority_Ca {
+ if m != nil {
+ return m.Ca
+ }
+ return nil
+}
+
+func (x *CertificateAuthority) GetKmsCa() *KMSCA {
+ if x, ok := x.GetCa().(*CertificateAuthority_KmsCa); ok {
+ return x.KmsCa
+ }
+ return nil
+}
+
+func (x *CertificateAuthority) GetGoogleCa() *GoogleCA {
+ if x, ok := x.GetCa().(*CertificateAuthority_GoogleCa); ok {
+ return x.GoogleCa
+ }
+ return nil
+}
+
+type isCertificateAuthority_Ca interface {
+ isCertificateAuthority_Ca()
+}
+
+type CertificateAuthority_KmsCa struct {
+ // kmsca is a KMS-based CA that requires a root cert and KMS signing key
+ KmsCa *KMSCA `protobuf:"bytes,1,opt,name=kms_ca,json=kmsCa,proto3,oneof"`
+}
+
+type CertificateAuthority_GoogleCa struct {
+ // google_ca is the Google Certificate Authority service
+ GoogleCa *GoogleCA `protobuf:"bytes,2,opt,name=google_ca,json=googleCa,proto3,oneof"`
+}
+
+func (*CertificateAuthority_KmsCa) isCertificateAuthority_Ca() {}
+
+func (*CertificateAuthority_GoogleCa) isCertificateAuthority_Ca() {}
+
+type KMSCA struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // key_ref is a unique reference to the signing key used for this CA
+ // most likely a KMS key prefixed with gcpkms://, awskms://, azurekms:// etc
+ // and the relevant resource name
+ KeyRef string `protobuf:"bytes,1,opt,name=key_ref,json=keyRef,proto3" json:"key_ref,omitempty"`
+ // cert_chain is the root certificate and (optional) chain
+ // in PEM-encoded format
+ CertChain string `protobuf:"bytes,2,opt,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
+}
+
+func (x *KMSCA) Reset() {
+ *x = KMSCA{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KMSCA) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KMSCA) ProtoMessage() {}
+
+func (x *KMSCA) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KMSCA.ProtoReflect.Descriptor instead.
+func (*KMSCA) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *KMSCA) GetKeyRef() string {
+ if x != nil {
+ return x.KeyRef
+ }
+ return ""
+}
+
+func (x *KMSCA) GetCertChain() string {
+ if x != nil {
+ return x.CertChain
+ }
+ return ""
+}
+
+type GoogleCA struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ref is a unique reference to the Google CA service in the format
+ // projects//locations//
+ Ref string `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
+}
+
+func (x *GoogleCA) Reset() {
+ *x = GoogleCA{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sigstore_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GoogleCA) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GoogleCA) ProtoMessage() {}
+
+func (x *GoogleCA) ProtoReflect() protoreflect.Message {
+ mi := &file_sigstore_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GoogleCA.ProtoReflect.Descriptor instead.
+func (*GoogleCA) Descriptor() ([]byte, []int) {
+ return file_sigstore_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *GoogleCA) GetRef() string {
+ if x != nil {
+ return x.Ref
+ }
+ return ""
+}
+
+var File_sigstore_platform_proto protoreflect.FileDescriptor
+
+var file_sigstore_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7b, 0x0a,
+ 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x08, 0x73,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x52, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x08, 0x53,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43,
+ 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
+ 0x69, 0x74, 0x79, 0x52, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+ 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73,
+ 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73,
+ 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x70,
+ 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+ 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x6b, 0x6d,
+ 0x73, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4b, 0x4d, 0x53, 0x43, 0x41, 0x48, 0x00, 0x52, 0x05, 0x6b, 0x6d,
+ 0x73, 0x43, 0x61, 0x12, 0x40, 0x0a, 0x09, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x61,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x41, 0x48, 0x00, 0x52, 0x08, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x43, 0x61, 0x42, 0x04, 0x0a, 0x02, 0x63, 0x61, 0x22, 0x3f, 0x0a, 0x05, 0x4b,
+ 0x4d, 0x53, 0x43, 0x41, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x1c, 0x0a, 0x08,
+ 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x32, 0xaf, 0x04, 0x0a, 0x0f, 0x53,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9a,
+ 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x3d, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x2b, 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69,
+ 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa5, 0x0d, 0x12, 0x7e, 0x0a, 0x04, 0x4c,
+ 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69,
+ 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xa7, 0x0d, 0x10, 0x01, 0x12, 0x7e, 0x0a, 0x06, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa8, 0x0d, 0x12, 0x7f, 0x0a, 0x06, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1d, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67,
+ 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa6, 0x0d, 0x42, 0x6a, 0x0a, 0x22,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
+ 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x76, 0x31, 0x42, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x53,
+ 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_sigstore_platform_proto_rawDescOnce sync.Once
+ file_sigstore_platform_proto_rawDescData = file_sigstore_platform_proto_rawDesc
+)
+
+func file_sigstore_platform_proto_rawDescGZIP() []byte {
+ file_sigstore_platform_proto_rawDescOnce.Do(func() {
+ file_sigstore_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_sigstore_platform_proto_rawDescData)
+ })
+ return file_sigstore_platform_proto_rawDescData
+}
+
+var file_sigstore_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_sigstore_platform_proto_goTypes = []interface{}{
+ (*CreateSigstoreRequest)(nil), // 0: chainguard.platform.iam.CreateSigstoreRequest
+ (*Sigstore)(nil), // 1: chainguard.platform.iam.Sigstore
+ (*SigstoreList)(nil), // 2: chainguard.platform.iam.SigstoreList
+ (*SigstoreFilter)(nil), // 3: chainguard.platform.iam.SigstoreFilter
+ (*DeleteSigstoreRequest)(nil), // 4: chainguard.platform.iam.DeleteSigstoreRequest
+ (*CertificateAuthority)(nil), // 5: chainguard.platform.iam.CertificateAuthority
+ (*KMSCA)(nil), // 6: chainguard.platform.iam.KMSCA
+ (*GoogleCA)(nil), // 7: chainguard.platform.iam.GoogleCA
+ (*v1.UIDPFilter)(nil), // 8: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 9: google.protobuf.Empty
+}
+var file_sigstore_platform_proto_depIdxs = []int32{
+ 1, // 0: chainguard.platform.iam.CreateSigstoreRequest.sigstore:type_name -> chainguard.platform.iam.Sigstore
+ 5, // 1: chainguard.platform.iam.Sigstore.certificate_authority:type_name -> chainguard.platform.iam.CertificateAuthority
+ 1, // 2: chainguard.platform.iam.SigstoreList.items:type_name -> chainguard.platform.iam.Sigstore
+ 8, // 3: chainguard.platform.iam.SigstoreFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 6, // 4: chainguard.platform.iam.CertificateAuthority.kms_ca:type_name -> chainguard.platform.iam.KMSCA
+ 7, // 5: chainguard.platform.iam.CertificateAuthority.google_ca:type_name -> chainguard.platform.iam.GoogleCA
+ 0, // 6: chainguard.platform.iam.SigstoreService.Create:input_type -> chainguard.platform.iam.CreateSigstoreRequest
+ 3, // 7: chainguard.platform.iam.SigstoreService.List:input_type -> chainguard.platform.iam.SigstoreFilter
+ 4, // 8: chainguard.platform.iam.SigstoreService.Delete:input_type -> chainguard.platform.iam.DeleteSigstoreRequest
+ 1, // 9: chainguard.platform.iam.SigstoreService.Update:input_type -> chainguard.platform.iam.Sigstore
+ 1, // 10: chainguard.platform.iam.SigstoreService.Create:output_type -> chainguard.platform.iam.Sigstore
+ 2, // 11: chainguard.platform.iam.SigstoreService.List:output_type -> chainguard.platform.iam.SigstoreList
+ 9, // 12: chainguard.platform.iam.SigstoreService.Delete:output_type -> google.protobuf.Empty
+ 1, // 13: chainguard.platform.iam.SigstoreService.Update:output_type -> chainguard.platform.iam.Sigstore
+ 10, // [10:14] is the sub-list for method output_type
+ 6, // [6:10] 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_sigstore_platform_proto_init() }
+func file_sigstore_platform_proto_init() {
+ if File_sigstore_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_sigstore_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateSigstoreRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Sigstore); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SigstoreList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SigstoreFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteSigstoreRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CertificateAuthority); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*KMSCA); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GoogleCA); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_sigstore_platform_proto_msgTypes[5].OneofWrappers = []interface{}{
+ (*CertificateAuthority_KmsCa)(nil),
+ (*CertificateAuthority_GoogleCa)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_sigstore_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 8,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_sigstore_platform_proto_goTypes,
+ DependencyIndexes: file_sigstore_platform_proto_depIdxs,
+ MessageInfos: file_sigstore_platform_proto_msgTypes,
+ }.Build()
+ File_sigstore_platform_proto = out.File
+ file_sigstore_platform_proto_rawDesc = nil
+ file_sigstore_platform_proto_goTypes = nil
+ file_sigstore_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.gw.go b/proto/platform/iam/v1/sigstore.platform.pb.gw.go
new file mode 100644
index 00000000..b61fd0e2
--- /dev/null
+++ b/proto/platform/iam/v1/sigstore.platform.pb.gw.go
@@ -0,0 +1,506 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: sigstore.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_SigstoreService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSigstoreRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Sigstore); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SigstoreService_Create_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateSigstoreRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Sigstore); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_SigstoreService_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SigstoreService_List_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SigstoreFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SigstoreService_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SigstoreService_List_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SigstoreFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SigstoreService_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_SigstoreService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteSigstoreRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SigstoreService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteSigstoreRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_SigstoreService_Update_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Sigstore
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SigstoreService_Update_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Sigstore
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterSigstoreServiceHandlerServer registers the http handlers for service SigstoreService to "mux".
+// UnaryRPC :call SigstoreServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSigstoreServiceHandlerFromEndpoint instead.
+func RegisterSigstoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SigstoreServiceServer) error {
+
+ mux.Handle("POST", pattern_SigstoreService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Create", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SigstoreService_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SigstoreService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/List", runtime.WithHTTPPathPattern("/iam/v1/sigstore"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SigstoreService_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_SigstoreService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Delete", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SigstoreService_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_SigstoreService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Update", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SigstoreService_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterSigstoreServiceHandlerFromEndpoint is same as RegisterSigstoreServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterSigstoreServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterSigstoreServiceHandler(ctx, mux, conn)
+}
+
+// RegisterSigstoreServiceHandler registers the http handlers for service SigstoreService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterSigstoreServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterSigstoreServiceHandlerClient(ctx, mux, NewSigstoreServiceClient(conn))
+}
+
+// RegisterSigstoreServiceHandlerClient registers the http handlers for service SigstoreService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SigstoreServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SigstoreServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "SigstoreServiceClient" to call the correct interceptors.
+func RegisterSigstoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SigstoreServiceClient) error {
+
+ mux.Handle("POST", pattern_SigstoreService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Create", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SigstoreService_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SigstoreService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/List", runtime.WithHTTPPathPattern("/iam/v1/sigstore"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SigstoreService_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_SigstoreService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Delete", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SigstoreService_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_SigstoreService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Update", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SigstoreService_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SigstoreService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_SigstoreService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "parent_id"}, ""))
+
+ pattern_SigstoreService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "sigstore"}, ""))
+
+ pattern_SigstoreService_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "id"}, ""))
+
+ pattern_SigstoreService_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "id"}, ""))
+)
+
+var (
+ forward_SigstoreService_Create_0 = runtime.ForwardResponseMessage
+
+ forward_SigstoreService_List_0 = runtime.ForwardResponseMessage
+
+ forward_SigstoreService_Delete_0 = runtime.ForwardResponseMessage
+
+ forward_SigstoreService_Update_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/iam/v1/sigstore.platform.proto b/proto/platform/iam/v1/sigstore.platform.proto
new file mode 100644
index 00000000..f1613ae5
--- /dev/null
+++ b/proto/platform/iam/v1/sigstore.platform.proto
@@ -0,0 +1,134 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.iam.v1";
+option java_outer_classname = "PlatformIAMSigstoreProto";
+
+package chainguard.platform.iam;
+
+import "google/protobuf/empty.proto";
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service SigstoreService {
+ rpc Create(CreateSigstoreRequest) returns (Sigstore) {
+ option (google.api.http) = {
+ post: "/iam/v1/sigstore/{parent_id=**}"
+ body: "sigstore"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_SIGSTORE_CREATE]
+ }
+ };
+ }
+
+ rpc List(SigstoreFilter) returns (SigstoreList) {
+ option (google.api.http) = {
+ get: "/iam/v1/sigstore"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_SIGSTORE_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Delete(DeleteSigstoreRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/iam/v1/sigstore/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_SIGSTORE_DELETE]
+ }
+ };
+ }
+
+ rpc Update(Sigstore) returns (Sigstore) {
+ option (google.api.http) = {
+ put: "/iam/v1/sigstore/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_SIGSTORE_UPDATE]
+ }
+ };
+ }
+}
+
+message CreateSigstoreRequest {
+ // parent_id, The Group UIDP path under which the new sigstore instance is associated.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // Sigstore is the sigstore instance to create;
+ Sigstore sigstore = 2;
+}
+
+message Sigstore {
+ // id is identifier of this specific sigstore instance.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // name, human-readable name of the sigstore instance.
+ string name = 2;
+
+ // description, human-readable description of the sigstore instance.
+ string description = 3;
+
+ // certificate authority for this instance of sigstore
+ CertificateAuthority certificate_authority = 4;
+
+ // unique hostname of this sigstore instance
+ string hostname = 5;
+}
+
+message SigstoreList {
+ repeated Sigstore items = 1;
+}
+
+message SigstoreFilter {
+ // id is the exact UIDP of the record.
+ string id = 1;
+
+ // uidp filers records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 2;
+
+ // name is the exact name of the record.
+ string name = 3;
+}
+
+message DeleteSigstoreRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message CertificateAuthority {
+ oneof ca {
+ // kmsca is a KMS-based CA that requires a root cert and KMS signing key
+ KMSCA kms_ca = 1;
+
+ // google_ca is the Google Certificate Authority service
+ GoogleCA google_ca =2;
+ }
+}
+
+message KMSCA {
+ // key_ref is a unique reference to the signing key used for this CA
+ // most likely a KMS key prefixed with gcpkms://, awskms://, azurekms:// etc
+ // and the relevant resource name
+ string key_ref = 1;
+
+ // cert_chain is the root certificate and (optional) chain
+ // in PEM-encoded format
+ string cert_chain = 2;
+}
+
+message GoogleCA {
+ // ref is a unique reference to the Google CA service in the format
+ // projects//locations//
+ string ref = 1;
+}
diff --git a/proto/platform/iam/v1/sigstore.platform_grpc.pb.go b/proto/platform/iam/v1/sigstore.platform_grpc.pb.go
new file mode 100644
index 00000000..97750f65
--- /dev/null
+++ b/proto/platform/iam/v1/sigstore.platform_grpc.pb.go
@@ -0,0 +1,221 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: sigstore.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ SigstoreService_Create_FullMethodName = "/chainguard.platform.iam.SigstoreService/Create"
+ SigstoreService_List_FullMethodName = "/chainguard.platform.iam.SigstoreService/List"
+ SigstoreService_Delete_FullMethodName = "/chainguard.platform.iam.SigstoreService/Delete"
+ SigstoreService_Update_FullMethodName = "/chainguard.platform.iam.SigstoreService/Update"
+)
+
+// SigstoreServiceClient is the client API for SigstoreService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SigstoreServiceClient interface {
+ Create(ctx context.Context, in *CreateSigstoreRequest, opts ...grpc.CallOption) (*Sigstore, error)
+ List(ctx context.Context, in *SigstoreFilter, opts ...grpc.CallOption) (*SigstoreList, error)
+ Delete(ctx context.Context, in *DeleteSigstoreRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Update(ctx context.Context, in *Sigstore, opts ...grpc.CallOption) (*Sigstore, error)
+}
+
+type sigstoreServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSigstoreServiceClient(cc grpc.ClientConnInterface) SigstoreServiceClient {
+ return &sigstoreServiceClient{cc}
+}
+
+func (c *sigstoreServiceClient) Create(ctx context.Context, in *CreateSigstoreRequest, opts ...grpc.CallOption) (*Sigstore, error) {
+ out := new(Sigstore)
+ err := c.cc.Invoke(ctx, SigstoreService_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *sigstoreServiceClient) List(ctx context.Context, in *SigstoreFilter, opts ...grpc.CallOption) (*SigstoreList, error) {
+ out := new(SigstoreList)
+ err := c.cc.Invoke(ctx, SigstoreService_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *sigstoreServiceClient) Delete(ctx context.Context, in *DeleteSigstoreRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, SigstoreService_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *sigstoreServiceClient) Update(ctx context.Context, in *Sigstore, opts ...grpc.CallOption) (*Sigstore, error) {
+ out := new(Sigstore)
+ err := c.cc.Invoke(ctx, SigstoreService_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SigstoreServiceServer is the server API for SigstoreService service.
+// All implementations must embed UnimplementedSigstoreServiceServer
+// for forward compatibility
+type SigstoreServiceServer interface {
+ Create(context.Context, *CreateSigstoreRequest) (*Sigstore, error)
+ List(context.Context, *SigstoreFilter) (*SigstoreList, error)
+ Delete(context.Context, *DeleteSigstoreRequest) (*emptypb.Empty, error)
+ Update(context.Context, *Sigstore) (*Sigstore, error)
+ mustEmbedUnimplementedSigstoreServiceServer()
+}
+
+// UnimplementedSigstoreServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedSigstoreServiceServer struct {
+}
+
+func (UnimplementedSigstoreServiceServer) Create(context.Context, *CreateSigstoreRequest) (*Sigstore, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedSigstoreServiceServer) List(context.Context, *SigstoreFilter) (*SigstoreList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedSigstoreServiceServer) Delete(context.Context, *DeleteSigstoreRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedSigstoreServiceServer) Update(context.Context, *Sigstore) (*Sigstore, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedSigstoreServiceServer) mustEmbedUnimplementedSigstoreServiceServer() {}
+
+// UnsafeSigstoreServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SigstoreServiceServer will
+// result in compilation errors.
+type UnsafeSigstoreServiceServer interface {
+ mustEmbedUnimplementedSigstoreServiceServer()
+}
+
+func RegisterSigstoreServiceServer(s grpc.ServiceRegistrar, srv SigstoreServiceServer) {
+ s.RegisterService(&SigstoreService_ServiceDesc, srv)
+}
+
+func _SigstoreService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateSigstoreRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SigstoreServiceServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SigstoreService_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SigstoreServiceServer).Create(ctx, req.(*CreateSigstoreRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _SigstoreService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SigstoreFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SigstoreServiceServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SigstoreService_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SigstoreServiceServer).List(ctx, req.(*SigstoreFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _SigstoreService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteSigstoreRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SigstoreServiceServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SigstoreService_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SigstoreServiceServer).Delete(ctx, req.(*DeleteSigstoreRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _SigstoreService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Sigstore)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SigstoreServiceServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SigstoreService_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SigstoreServiceServer).Update(ctx, req.(*Sigstore))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// SigstoreService_ServiceDesc is the grpc.ServiceDesc for SigstoreService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var SigstoreService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.iam.SigstoreService",
+ HandlerType: (*SigstoreServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _SigstoreService_Create_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _SigstoreService_List_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _SigstoreService_Delete_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _SigstoreService_Update_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "sigstore.platform.proto",
+}
diff --git a/proto/platform/iam/v1/test/mock_account_accociations.go b/proto/platform/iam/v1/test/mock_account_accociations.go
new file mode 100644
index 00000000..8de0cce6
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_account_accociations.go
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.GroupAccountAssociationsClient = (*MockGroupAccountAssociationsClient)(nil)
+
+type MockGroupAccountAssociationsClient struct {
+ OnCreate []AccountAssociationsOnCreate
+ OnUpdate []AccountAssociationsOnUpdate
+ OnDelete []AccountAssociationsOnDelete
+ OnList []AccountAssociationsOnList
+ OnCheck []AccountAssociationsOnCheck
+}
+
+type AccountAssociationsOnCreate struct {
+ Given *iam.AccountAssociations
+ Created *iam.AccountAssociations
+ Error error
+}
+
+type AccountAssociationsOnUpdate struct {
+ Given *iam.AccountAssociations
+ Updated *iam.AccountAssociations
+ Error error
+}
+
+type AccountAssociationsOnDelete struct {
+ Given *iam.DeleteAccountAssociationsRequest
+ Error error
+}
+
+type AccountAssociationsOnList struct {
+ Given *iam.AccountAssociationsFilter
+ List *iam.AccountAssociationsList
+ Error error
+}
+
+type AccountAssociationsOnCheck struct {
+ Given *iam.AccountAssociationsCheckRequest
+ Status *iam.AccountAssociationsStatus
+ Error error
+}
+
+func (m MockGroupAccountAssociationsClient) Create(_ context.Context, given *iam.AccountAssociations, _ ...grpc.CallOption) (*iam.AccountAssociations, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupAccountAssociationsClient) Update(_ context.Context, given *iam.AccountAssociations, _ ...grpc.CallOption) (*iam.AccountAssociations, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupAccountAssociationsClient) Delete(_ context.Context, given *iam.DeleteAccountAssociationsRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupAccountAssociationsClient) List(_ context.Context, given *iam.AccountAssociationsFilter, _ ...grpc.CallOption) (*iam.AccountAssociationsList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return proto.Clone(o.List).(*iam.AccountAssociationsList), o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupAccountAssociationsClient) Check(_ context.Context, given *iam.AccountAssociationsCheckRequest, _ ...grpc.CallOption) (*iam.AccountAssociationsStatus, error) {
+ for _, o := range m.OnCheck {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return proto.Clone(o.Status).(*iam.AccountAssociationsStatus), o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_client.go b/proto/platform/iam/v1/test/mock_client.go
new file mode 100644
index 00000000..f852d27a
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_client.go
@@ -0,0 +1,77 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ events "chainguard.dev/sdk/proto/platform/events/v1"
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+type MockIAMClient struct {
+ OnClose error
+
+ GroupsClient MockGroupsClient
+ GroupInvitesClient MockGroupInvitesClient
+ RolesClient MockRolesClient
+ RoleBindingsClient MockRoleBindingsClient
+ IdentitiesClient MockIdentitiesClient
+ DeprecatedIdentitiesClient MockDeprecatedIdentitiesClient
+ IdentityProvidersClient MockIdentityProvidersClient
+ GroupAccountAssociationsClient MockGroupAccountAssociationsClient
+ SubscriptionsClient MockSubscriptionsClient
+ PoliciesClient MockPoliciesClient
+ SigstoreClient MockSigstoreClient
+}
+
+var _ iam.Clients = (*MockIAMClient)(nil)
+
+func (m MockIAMClient) Groups() iam.GroupsClient {
+ return &m.GroupsClient
+}
+
+func (m MockIAMClient) GroupInvites() iam.GroupInvitesClient {
+ return &m.GroupInvitesClient
+}
+
+func (m MockIAMClient) Roles() iam.RolesClient {
+ return &m.RolesClient
+}
+
+func (m MockIAMClient) RoleBindings() iam.RoleBindingsClient {
+ return &m.RoleBindingsClient
+}
+
+func (m MockIAMClient) Identities() iam.IdentitiesClient {
+ return &m.IdentitiesClient
+}
+
+func (m MockIAMClient) DeprecatedIdentities() events.IdentitiesClient {
+ return &m.DeprecatedIdentitiesClient
+}
+
+func (m MockIAMClient) IdentityProviders() iam.IdentityProvidersClient {
+ return &m.IdentityProvidersClient
+}
+
+func (m MockIAMClient) AccountAssociations() iam.GroupAccountAssociationsClient {
+ return &m.GroupAccountAssociationsClient
+}
+
+func (m MockIAMClient) Subscriptions() events.SubscriptionsClient {
+ return &m.SubscriptionsClient
+}
+
+func (m MockIAMClient) Policies() iam.PoliciesClient {
+ return &m.PoliciesClient
+}
+
+func (m MockIAMClient) Sigstore() iam.SigstoreServiceClient {
+ return &m.SigstoreClient
+}
+
+func (m MockIAMClient) Close() error {
+ return m.OnClose
+}
diff --git a/proto/platform/iam/v1/test/mock_deprecatedidentities.go b/proto/platform/iam/v1/test/mock_deprecatedidentities.go
new file mode 100644
index 00000000..3480421c
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_deprecatedidentities.go
@@ -0,0 +1,42 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ events "chainguard.dev/sdk/proto/platform/events/v1"
+)
+
+var _ events.IdentitiesClient = (*MockDeprecatedIdentitiesClient)(nil)
+
+type MockDeprecatedIdentitiesClient struct {
+ OnCreate []DeprecatedIdentityOnCreate
+}
+
+type DeprecatedIdentityOnCreate struct {
+ Given *events.Identity
+ Created *events.Identity
+ Error error
+}
+
+func (m MockDeprecatedIdentitiesClient) Create(_ context.Context, given *events.Identity, _ ...grpc.CallOption) (*events.Identity, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockDeprecatedIdentitiesClient) UpdateMetadata(ctx context.Context, in *events.IdentityMetadata, opts ...grpc.CallOption) (*events.IdentityMetadata, error) { //nolint: revive
+ return in, nil
+}
diff --git a/proto/platform/iam/v1/test/mock_groups.go b/proto/platform/iam/v1/test/mock_groups.go
new file mode 100644
index 00000000..d2eec859
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_groups.go
@@ -0,0 +1,105 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+var _ iam.GroupsClient = (*MockGroupsClient)(nil)
+
+type MockGroupsClient struct {
+ OnCreate []GroupOnCreate
+ OnUpdate []GroupOnUpdate
+ OnDelete []GroupOnDelete
+ OnList []GroupOnList
+}
+
+type GroupOnCreate struct {
+ Given *iam.CreateGroupRequest
+ Created *iam.Group
+ Error error
+}
+
+type GroupOnUpdate struct {
+ Given *iam.Group
+ Updated *iam.Group
+ Error error
+}
+
+type GroupOnDelete struct {
+ Given *iam.DeleteGroupRequest
+ Error error
+}
+
+type GroupOnList struct {
+ Given *iam.GroupFilter
+ List *iam.GroupList
+ Error error
+}
+
+func (m MockGroupsClient) Create(_ context.Context, given *iam.CreateGroupRequest, _ ...grpc.CallOption) (*iam.Group, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupsClient) Update(_ context.Context, given *iam.Group, _ ...grpc.CallOption) (*iam.Group, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupsClient) Delete(_ context.Context, given *iam.DeleteGroupRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupsClient) List(_ context.Context, given *iam.GroupFilter, _ ...grpc.CallOption) (*iam.GroupList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+// -- Server --
+
+type MockGroupsServer struct {
+ iam.UnimplementedGroupsServer
+ Client MockGroupsClient
+}
+
+func (m MockGroupsServer) Create(ctx context.Context, req *iam.CreateGroupRequest) (*iam.Group, error) {
+ return m.Client.Create(ctx, req)
+}
+func (m MockGroupsServer) Update(ctx context.Context, req *iam.Group) (*iam.Group, error) {
+ return m.Client.Update(ctx, req)
+}
+func (m MockGroupsServer) List(ctx context.Context, req *iam.GroupFilter) (*iam.GroupList, error) {
+ return m.Client.List(ctx, req)
+}
+func (m MockGroupsServer) Delete(ctx context.Context, req *iam.DeleteGroupRequest) (*emptypb.Empty, error) {
+ return m.Client.Delete(ctx, req)
+}
diff --git a/proto/platform/iam/v1/test/mock_identities.go b/proto/platform/iam/v1/test/mock_identities.go
new file mode 100644
index 00000000..acea986d
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_identities.go
@@ -0,0 +1,102 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.IdentitiesClient = (*MockIdentitiesClient)(nil)
+
+type MockIdentitiesClient struct {
+ OnCreate []IdentityOnCreate
+ OnUpdate []IdentityOnUpdate
+ OnDelete []IdentityOnDelete
+ OnList []IdentityOnList
+ OnLooKup []IdentityOnLookup
+}
+
+type IdentityOnCreate struct {
+ Given *iam.CreateIdentityRequest
+ Created *iam.Identity
+ Error error
+}
+
+type IdentityOnUpdate struct {
+ Given *iam.Identity
+ Updated *iam.Identity
+ Error error
+}
+
+type IdentityOnDelete struct {
+ Given *iam.DeleteIdentityRequest
+ Error error
+}
+
+type IdentityOnList struct {
+ Given *iam.IdentityFilter
+ List *iam.IdentityList
+ Error error
+}
+
+type IdentityOnLookup struct {
+ Given *iam.LookupRequest
+ Found *iam.Identity
+ Error error
+}
+
+func (m MockIdentitiesClient) Create(_ context.Context, given *iam.CreateIdentityRequest, _ ...grpc.CallOption) (*iam.Identity, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentitiesClient) Update(_ context.Context, given *iam.Identity, _ ...grpc.CallOption) (*iam.Identity, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentitiesClient) Delete(_ context.Context, given *iam.DeleteIdentityRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentitiesClient) List(_ context.Context, given *iam.IdentityFilter, _ ...grpc.CallOption) (*iam.IdentityList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentitiesClient) Lookup(_ context.Context, given *iam.LookupRequest, _ ...grpc.CallOption) (*iam.Identity, error) {
+ for _, o := range m.OnLooKup {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Found, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_identity_providers.go b/proto/platform/iam/v1/test/mock_identity_providers.go
new file mode 100644
index 00000000..1d3d0c53
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_identity_providers.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ api "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ api.IdentityProvidersClient = (*MockIdentityProvidersClient)(nil)
+
+type MockIdentityProvidersClient struct {
+ OnCreate []IdentityProvidersOnCreate
+ OnUpdate []IdentityProvidersOnUpdate
+ OnDelete []IdentityProvidersOnDelete
+ OnList []IdentityProvidersOnList
+}
+
+type IdentityProvidersOnCreate struct {
+ Given *api.CreateIdentityProviderRequest
+ Created *api.IdentityProvider
+ Error error
+}
+
+type IdentityProvidersOnUpdate struct {
+ Given *api.IdentityProvider
+ Updated *api.IdentityProvider
+ Error error
+}
+
+type IdentityProvidersOnDelete struct {
+ Given *api.DeleteIdentityProviderRequest
+ Error error
+}
+
+type IdentityProvidersOnList struct {
+ Given *api.IdentityProviderFilter
+ List *api.IdentityProviderList
+ Error error
+}
+
+func (m MockIdentityProvidersClient) Create(_ context.Context, given *api.CreateIdentityProviderRequest, _ ...grpc.CallOption) (*api.IdentityProvider, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentityProvidersClient) Update(_ context.Context, given *api.IdentityProvider, _ ...grpc.CallOption) (*api.IdentityProvider, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentityProvidersClient) Delete(_ context.Context, given *api.DeleteIdentityProviderRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockIdentityProvidersClient) List(_ context.Context, given *api.IdentityProviderFilter, _ ...grpc.CallOption) (*api.IdentityProviderList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_invites.go b/proto/platform/iam/v1/test/mock_invites.go
new file mode 100644
index 00000000..b546f392
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_invites.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.GroupInvitesClient = (*MockGroupInvitesClient)(nil)
+
+type MockGroupInvitesClient struct {
+ OnCreate []GroupInviteOnCreate
+ OnCreateWithGroup []GroupInviteOnCreateWithGroup
+ OnDelete []GroupInviteOnDelete
+ OnList []GroupInviteOnList
+}
+
+type GroupInviteOnCreate struct {
+ Given *iam.GroupInviteRequest
+ Created *iam.GroupInvite
+ Error error
+}
+
+type GroupInviteOnCreateWithGroup struct {
+ Given *iam.GroupInviteRequest
+ Created *iam.GroupInvite
+ Error error
+}
+
+type GroupInviteOnDelete struct {
+ Given *iam.DeleteGroupInviteRequest
+ Error error
+}
+
+type GroupInviteOnList struct {
+ Given *iam.GroupInviteFilter
+ List *iam.GroupInviteList
+ Error error
+}
+
+func (m MockGroupInvitesClient) Create(_ context.Context, given *iam.GroupInviteRequest, _ ...grpc.CallOption) (*iam.GroupInvite, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupInvitesClient) CreateWithGroup(_ context.Context, given *iam.GroupInviteRequest, _ ...grpc.CallOption) (*iam.GroupInvite, error) {
+ for _, o := range m.OnCreateWithGroup {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupInvitesClient) Delete(_ context.Context, given *iam.DeleteGroupInviteRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockGroupInvitesClient) List(_ context.Context, given *iam.GroupInviteFilter, _ ...grpc.CallOption) (*iam.GroupInviteList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_policies.go b/proto/platform/iam/v1/test/mock_policies.go
new file mode 100644
index 00000000..f9ac1179
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_policies.go
@@ -0,0 +1,118 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.PoliciesClient = (*MockPoliciesClient)(nil)
+
+type MockPoliciesClient struct {
+ OnCreate []PoliciesOnCreate
+ OnUpdate []PoliciesOnUpdate
+ OnDelete []PoliciesOnDelete
+ OnList []PoliciesOnList
+ OnListVersions []PoliciesOnListVersions
+ OnActiveVersion []PoliciesOnActivateVersion
+}
+
+type PoliciesOnCreate struct {
+ Given *iam.CreatePolicyRequest
+ Created *iam.Policy
+ Error error
+}
+
+type PoliciesOnUpdate struct {
+ Given *iam.Policy
+ Updated *iam.Policy
+ Error error
+}
+
+type PoliciesOnDelete struct {
+ Given *iam.DeletePolicyRequest
+ Error error
+}
+
+type PoliciesOnList struct {
+ Given *iam.PolicyFilter
+ List *iam.PolicyList
+ Error error
+}
+
+type PoliciesOnListVersions struct {
+ Given *iam.ListVersionsRequest
+ List *iam.PolicyVersionList
+ Error error
+}
+
+type PoliciesOnActivateVersion struct {
+ Given *iam.ActivateVersionRequest
+ Active *iam.Policy
+ Error error
+}
+
+func (m MockPoliciesClient) Create(_ context.Context, given *iam.CreatePolicyRequest, _ ...grpc.CallOption) (*iam.Policy, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockPoliciesClient) Update(_ context.Context, given *iam.Policy, _ ...grpc.CallOption) (*iam.Policy, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockPoliciesClient) Delete(_ context.Context, given *iam.DeletePolicyRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockPoliciesClient) List(_ context.Context, given *iam.PolicyFilter, _ ...grpc.CallOption) (*iam.PolicyList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockPoliciesClient) ListVersions(_ context.Context, given *iam.ListVersionsRequest, _ ...grpc.CallOption) (*iam.PolicyVersionList, error) {
+ for _, o := range m.OnListVersions {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockPoliciesClient) ActivateVersion(_ context.Context, given *iam.ActivateVersionRequest, _ ...grpc.CallOption) (*iam.Policy, error) {
+ for _, o := range m.OnActiveVersion {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Active, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_role_bindings.go b/proto/platform/iam/v1/test/mock_role_bindings.go
new file mode 100644
index 00000000..abd2b9e1
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_role_bindings.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.RoleBindingsClient = (*MockRoleBindingsClient)(nil)
+
+type MockRoleBindingsClient struct {
+ OnCreate []RoleBindingOnCreate
+ OnUpdate []RoleBindingOnUpdate
+ OnDelete []RoleBindingOnDelete
+ OnList []RoleBindingOnList
+}
+
+type RoleBindingOnCreate struct {
+ Given *iam.CreateRoleBindingRequest
+ Created *iam.RoleBinding
+ Error error
+}
+
+type RoleBindingOnUpdate struct {
+ Given *iam.RoleBinding
+ Updated *iam.RoleBinding
+ Error error
+}
+
+type RoleBindingOnDelete struct {
+ Given *iam.DeleteRoleBindingRequest
+ Error error
+}
+
+type RoleBindingOnList struct {
+ Given *iam.RoleBindingFilter
+ List *iam.RoleBindingList
+ Error error
+}
+
+func (m MockRoleBindingsClient) Create(_ context.Context, given *iam.CreateRoleBindingRequest, _ ...grpc.CallOption) (*iam.RoleBinding, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRoleBindingsClient) Update(_ context.Context, given *iam.RoleBinding, _ ...grpc.CallOption) (*iam.RoleBinding, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRoleBindingsClient) Delete(_ context.Context, given *iam.DeleteRoleBindingRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRoleBindingsClient) List(_ context.Context, given *iam.RoleBindingFilter, _ ...grpc.CallOption) (*iam.RoleBindingList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_roles.go b/proto/platform/iam/v1/test/mock_roles.go
new file mode 100644
index 00000000..b3b3cc25
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_roles.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+)
+
+var _ iam.RolesClient = (*MockRolesClient)(nil)
+
+type MockRolesClient struct {
+ OnCreate []RoleOnCreate
+ OnUpdate []RoleOnUpdate
+ OnDelete []RoleOnDelete
+ OnList []RoleOnList
+}
+
+type RoleOnCreate struct {
+ Given *iam.CreateRoleRequest
+ Created *iam.Role
+ Error error
+}
+
+type RoleOnUpdate struct {
+ Given *iam.Role
+ Updated *iam.Role
+ Error error
+}
+
+type RoleOnDelete struct {
+ Given *iam.DeleteRoleRequest
+ Error error
+}
+
+type RoleOnList struct {
+ Given *iam.RoleFilter
+ List *iam.RoleList
+ Error error
+}
+
+func (m MockRolesClient) Create(_ context.Context, given *iam.CreateRoleRequest, _ ...grpc.CallOption) (*iam.Role, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRolesClient) Update(_ context.Context, given *iam.Role, _ ...grpc.CallOption) (*iam.Role, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRolesClient) Delete(_ context.Context, given *iam.DeleteRoleRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRolesClient) List(_ context.Context, given *iam.RoleFilter, _ ...grpc.CallOption) (*iam.RoleList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_sigstore.go b/proto/platform/iam/v1/test/mock_sigstore.go
new file mode 100644
index 00000000..7433bc6a
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_sigstore.go
@@ -0,0 +1,85 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+var _ iam.SigstoreServiceClient = (*MockSigstoreClient)(nil)
+
+type MockSigstoreClient struct {
+ OnCreate []SigstoreOnCreate
+ OnUpdate []SigstoreOnUpdate
+ OnDelete []SigstoreOnDelete
+ OnList []SigstoreOnList
+}
+
+type SigstoreOnCreate struct {
+ Given *iam.CreateSigstoreRequest
+ Created *iam.Sigstore
+ Error error
+}
+
+type SigstoreOnUpdate struct {
+ Given *iam.Sigstore
+ Updated *iam.Sigstore
+ Error error
+}
+
+type SigstoreOnDelete struct {
+ Given *iam.DeleteSigstoreRequest
+ Error error
+}
+
+type SigstoreOnList struct {
+ Given *iam.SigstoreFilter
+ List *iam.SigstoreList
+ Error error
+}
+
+func (m MockSigstoreClient) Create(_ context.Context, given *iam.CreateSigstoreRequest, _ ...grpc.CallOption) (*iam.Sigstore, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSigstoreClient) Update(_ context.Context, given *iam.Sigstore, _ ...grpc.CallOption) (*iam.Sigstore, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSigstoreClient) Delete(_ context.Context, given *iam.DeleteSigstoreRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSigstoreClient) List(_ context.Context, given *iam.SigstoreFilter, _ ...grpc.CallOption) (*iam.SigstoreList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/iam/v1/test/mock_subscriptions.go b/proto/platform/iam/v1/test/mock_subscriptions.go
new file mode 100644
index 00000000..8ac42298
--- /dev/null
+++ b/proto/platform/iam/v1/test/mock_subscriptions.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ events "chainguard.dev/sdk/proto/platform/events/v1"
+)
+
+var _ events.SubscriptionsClient = (*MockSubscriptionsClient)(nil)
+
+type MockSubscriptionsClient struct {
+ OnCreate []SubscriptionOnCreate
+ OnUpdate []SubscriptionOnUpdate
+ OnDelete []SubscriptionOnDelete
+ OnList []SubscriptionOnList
+}
+
+type SubscriptionOnCreate struct {
+ Given *events.CreateSubscriptionRequest
+ Created *events.Subscription
+ Error error
+}
+
+type SubscriptionOnUpdate struct {
+ Given *events.Subscription
+ Updated *events.Subscription
+ Error error
+}
+
+type SubscriptionOnDelete struct {
+ Given *events.DeleteSubscriptionRequest
+ Error error
+}
+
+type SubscriptionOnList struct {
+ Given *events.SubscriptionFilter
+ List *events.SubscriptionList
+ Error error
+}
+
+func (m MockSubscriptionsClient) Create(_ context.Context, given *events.CreateSubscriptionRequest, _ ...grpc.CallOption) (*events.Subscription, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSubscriptionsClient) Update(_ context.Context, given *events.Subscription, _ ...grpc.CallOption) (*events.Subscription, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSubscriptionsClient) Delete(_ context.Context, given *events.DeleteSubscriptionRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSubscriptionsClient) List(_ context.Context, given *events.SubscriptionFilter, _ ...grpc.CallOption) (*events.SubscriptionList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/oidc/v1/clients.go b/proto/platform/oidc/v1/clients.go
new file mode 100644
index 00000000..61058163
--- /dev/null
+++ b/proto/platform/oidc/v1/clients.go
@@ -0,0 +1,101 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Clients interface {
+ STS() SecurityTokenServiceClient
+
+ Close() error
+}
+
+type options struct {
+ userAgent string
+}
+
+type ClientOption func(*options)
+
+func WithUserAgent(agent string) ClientOption {
+ return func(o *options) {
+ o.userAgent = agent
+ }
+}
+func NewClients(ctx context.Context, addr string, token string, opts ...ClientOption) (Clients, error) {
+ conf := new(options)
+ for _, opt := range opts {
+ opt(conf)
+ }
+
+ uri, err := url.Parse(addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse oidc service address, must be a url: %w", err)
+ }
+
+ target, rpcOpts := delegate.GRPCOptions(*uri)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ rpcOpts = append(rpcOpts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ if conf.userAgent != "" {
+ rpcOpts = append(rpcOpts, grpc.WithUserAgent(conf.userAgent))
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, rpcOpts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ sts: NewSecurityTokenServiceClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ sts: NewSecurityTokenServiceClient(conn),
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ sts SecurityTokenServiceClient
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) STS() SecurityTokenServiceClient {
+ return c.sts
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/oidc/v1/doc.go b/proto/platform/oidc/v1/doc.go
new file mode 100644
index 00000000..93693c42
--- /dev/null
+++ b/proto/platform/oidc/v1/doc.go
@@ -0,0 +1,10 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing OIDC interactions for the Platform.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. oidc.platform.proto
+package v1
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.go b/proto/platform/oidc/v1/oidc.platform.pb.go
new file mode 100644
index 00000000..1a2b1350
--- /dev/null
+++ b/proto/platform/oidc/v1/oidc.platform.pb.go
@@ -0,0 +1,459 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: oidc.platform.proto
+
+package v1
+
+import (
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type ExchangeRefreshTokenRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Aud []string `protobuf:"bytes,1,rep,name=aud,proto3" json:"aud,omitempty"`
+ Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
+ // List of capabilities to request for the token.
+ Cap []string `protobuf:"bytes,3,rep,name=cap,proto3" json:"cap,omitempty"`
+}
+
+func (x *ExchangeRefreshTokenRequest) Reset() {
+ *x = ExchangeRefreshTokenRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_oidc_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ExchangeRefreshTokenRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExchangeRefreshTokenRequest) ProtoMessage() {}
+
+func (x *ExchangeRefreshTokenRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_oidc_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExchangeRefreshTokenRequest.ProtoReflect.Descriptor instead.
+func (*ExchangeRefreshTokenRequest) Descriptor() ([]byte, []int) {
+ return file_oidc_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ExchangeRefreshTokenRequest) GetAud() []string {
+ if x != nil {
+ return x.Aud
+ }
+ return nil
+}
+
+func (x *ExchangeRefreshTokenRequest) GetScope() string {
+ if x != nil {
+ return x.Scope
+ }
+ return ""
+}
+
+func (x *ExchangeRefreshTokenRequest) GetCap() []string {
+ if x != nil {
+ return x.Cap
+ }
+ return nil
+}
+
+type ExchangeRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Aud []string `protobuf:"bytes,1,rep,name=aud,proto3" json:"aud,omitempty"`
+ Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"`
+ Cluster string `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Identity string `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"`
+ // List of capabilities to request for the token.
+ Cap []string `protobuf:"bytes,5,rep,name=cap,proto3" json:"cap,omitempty"`
+ // Whether or not to include the upstream token in the response
+ IncludeUpstreamToken bool `protobuf:"varint,6,opt,name=include_upstream_token,json=includeUpstreamToken,proto3" json:"include_upstream_token,omitempty"`
+}
+
+func (x *ExchangeRequest) Reset() {
+ *x = ExchangeRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_oidc_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ExchangeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExchangeRequest) ProtoMessage() {}
+
+func (x *ExchangeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_oidc_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExchangeRequest.ProtoReflect.Descriptor instead.
+func (*ExchangeRequest) Descriptor() ([]byte, []int) {
+ return file_oidc_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ExchangeRequest) GetAud() []string {
+ if x != nil {
+ return x.Aud
+ }
+ return nil
+}
+
+func (x *ExchangeRequest) GetScope() string {
+ if x != nil {
+ return x.Scope
+ }
+ return ""
+}
+
+func (x *ExchangeRequest) GetCluster() string {
+ if x != nil {
+ return x.Cluster
+ }
+ return ""
+}
+
+func (x *ExchangeRequest) GetIdentity() string {
+ if x != nil {
+ return x.Identity
+ }
+ return ""
+}
+
+func (x *ExchangeRequest) GetCap() []string {
+ if x != nil {
+ return x.Cap
+ }
+ return nil
+}
+
+func (x *ExchangeRequest) GetIncludeUpstreamToken() bool {
+ if x != nil {
+ return x.IncludeUpstreamToken
+ }
+ return false
+}
+
+type RawToken struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
+}
+
+func (x *RawToken) Reset() {
+ *x = RawToken{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_oidc_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RawToken) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RawToken) ProtoMessage() {}
+
+func (x *RawToken) ProtoReflect() protoreflect.Message {
+ mi := &file_oidc_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RawToken.ProtoReflect.Descriptor instead.
+func (*RawToken) Descriptor() ([]byte, []int) {
+ return file_oidc_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *RawToken) GetToken() string {
+ if x != nil {
+ return x.Token
+ }
+ return ""
+}
+
+// ExchangeRefreshToken returns a pair of token, in order to allow
+// refresh token to also be rotated.
+type TokenPair struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Token *RawToken `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
+ RefreshToken *RawToken `protobuf:"bytes,2,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"`
+}
+
+func (x *TokenPair) Reset() {
+ *x = TokenPair{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_oidc_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TokenPair) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TokenPair) ProtoMessage() {}
+
+func (x *TokenPair) ProtoReflect() protoreflect.Message {
+ mi := &file_oidc_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TokenPair.ProtoReflect.Descriptor instead.
+func (*TokenPair) Descriptor() ([]byte, []int) {
+ return file_oidc_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *TokenPair) GetToken() *RawToken {
+ if x != nil {
+ return x.Token
+ }
+ return nil
+}
+
+func (x *TokenPair) GetRefreshToken() *RawToken {
+ if x != nil {
+ return x.RefreshToken
+ }
+ return nil
+}
+
+var File_oidc_platform_proto protoreflect.FileDescriptor
+
+var file_oidc_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x1a,
+ 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x1b, 0x45, 0x78, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x75, 0x64, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x61, 0x75, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
+ 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
+ 0x12, 0x39, 0x0a, 0x03, 0x63, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x27, 0xfa,
+ 0x41, 0x24, 0x0a, 0x22, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63,
+ 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x43, 0x61, 0x70, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x03, 0x63, 0x61, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x0f,
+ 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x10, 0x0a, 0x03, 0x61, 0x75, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x61, 0x75,
+ 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a,
+ 0x03, 0x63, 0x61, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x41, 0x24, 0x0a,
+ 0x22, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x63, 0x61, 0x70, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x79, 0x52, 0x03, 0x63, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x6f, 0x6b,
+ 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x20,
+ 0x0a, 0x08, 0x52, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
+ 0x22, 0x8e, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x38,
+ 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x47, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72,
+ 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x32, 0xb4, 0x02, 0x0a, 0x14, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x08, 0x45,
+ 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69,
+ 0x64, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61,
+ 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x0d,
+ 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5a, 0x0f, 0x12,
+ 0x0d, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x97,
+ 0x01, 0x0a, 0x14, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65,
+ 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69,
+ 0x64, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65,
+ 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50,
+ 0x61, 0x69, 0x72, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x73, 0x74,
+ 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65,
+ 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x65, 0x0a, 0x23, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x76, 0x31, 0x42,
+ 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x6f, 0x69, 0x64, 0x63, 0x2f, 0x76, 0x31, 0x62,
+ 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_oidc_platform_proto_rawDescOnce sync.Once
+ file_oidc_platform_proto_rawDescData = file_oidc_platform_proto_rawDesc
+)
+
+func file_oidc_platform_proto_rawDescGZIP() []byte {
+ file_oidc_platform_proto_rawDescOnce.Do(func() {
+ file_oidc_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_oidc_platform_proto_rawDescData)
+ })
+ return file_oidc_platform_proto_rawDescData
+}
+
+var file_oidc_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_oidc_platform_proto_goTypes = []interface{}{
+ (*ExchangeRefreshTokenRequest)(nil), // 0: chainguard.platform.oidc.ExchangeRefreshTokenRequest
+ (*ExchangeRequest)(nil), // 1: chainguard.platform.oidc.ExchangeRequest
+ (*RawToken)(nil), // 2: chainguard.platform.oidc.RawToken
+ (*TokenPair)(nil), // 3: chainguard.platform.oidc.TokenPair
+}
+var file_oidc_platform_proto_depIdxs = []int32{
+ 2, // 0: chainguard.platform.oidc.TokenPair.token:type_name -> chainguard.platform.oidc.RawToken
+ 2, // 1: chainguard.platform.oidc.TokenPair.refresh_token:type_name -> chainguard.platform.oidc.RawToken
+ 1, // 2: chainguard.platform.oidc.SecurityTokenService.Exchange:input_type -> chainguard.platform.oidc.ExchangeRequest
+ 0, // 3: chainguard.platform.oidc.SecurityTokenService.ExchangeRefreshToken:input_type -> chainguard.platform.oidc.ExchangeRefreshTokenRequest
+ 2, // 4: chainguard.platform.oidc.SecurityTokenService.Exchange:output_type -> chainguard.platform.oidc.RawToken
+ 3, // 5: chainguard.platform.oidc.SecurityTokenService.ExchangeRefreshToken:output_type -> chainguard.platform.oidc.TokenPair
+ 4, // [4:6] is the sub-list for method output_type
+ 2, // [2:4] 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_oidc_platform_proto_init() }
+func file_oidc_platform_proto_init() {
+ if File_oidc_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_oidc_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ExchangeRefreshTokenRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_oidc_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ExchangeRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_oidc_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RawToken); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_oidc_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TokenPair); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_oidc_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 4,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_oidc_platform_proto_goTypes,
+ DependencyIndexes: file_oidc_platform_proto_depIdxs,
+ MessageInfos: file_oidc_platform_proto_msgTypes,
+ }.Build()
+ File_oidc_platform_proto = out.File
+ file_oidc_platform_proto_rawDesc = nil
+ file_oidc_platform_proto_goTypes = nil
+ file_oidc_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.gw.go b/proto/platform/oidc/v1/oidc.platform.pb.gw.go
new file mode 100644
index 00000000..fc3d42cf
--- /dev/null
+++ b/proto/platform/oidc/v1/oidc.platform.pb.gw.go
@@ -0,0 +1,341 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: oidc.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_SecurityTokenService_Exchange_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SecurityTokenService_Exchange_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Exchange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SecurityTokenService_Exchange_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Exchange(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_SecurityTokenService_Exchange_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SecurityTokenService_Exchange_1(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_1); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Exchange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SecurityTokenService_Exchange_1(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_Exchange_1); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Exchange(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_SecurityTokenService_ExchangeRefreshToken_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_SecurityTokenService_ExchangeRefreshToken_0(ctx context.Context, marshaler runtime.Marshaler, client SecurityTokenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRefreshTokenRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_ExchangeRefreshToken_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ExchangeRefreshToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_SecurityTokenService_ExchangeRefreshToken_0(ctx context.Context, marshaler runtime.Marshaler, server SecurityTokenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ExchangeRefreshTokenRequest
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SecurityTokenService_ExchangeRefreshToken_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ExchangeRefreshToken(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterSecurityTokenServiceHandlerServer registers the http handlers for service SecurityTokenService to "mux".
+// UnaryRPC :call SecurityTokenServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSecurityTokenServiceHandlerFromEndpoint instead.
+func RegisterSecurityTokenServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SecurityTokenServiceServer) error {
+
+ mux.Handle("POST", pattern_SecurityTokenService_Exchange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SecurityTokenService_Exchange_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_Exchange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SecurityTokenService_Exchange_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SecurityTokenService_Exchange_1(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_Exchange_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_SecurityTokenService_ExchangeRefreshToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken", runtime.WithHTTPPathPattern("/sts/exchange_refresh_token"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_SecurityTokenService_ExchangeRefreshToken_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_ExchangeRefreshToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterSecurityTokenServiceHandlerFromEndpoint is same as RegisterSecurityTokenServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterSecurityTokenServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterSecurityTokenServiceHandler(ctx, mux, conn)
+}
+
+// RegisterSecurityTokenServiceHandler registers the http handlers for service SecurityTokenService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterSecurityTokenServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterSecurityTokenServiceHandlerClient(ctx, mux, NewSecurityTokenServiceClient(conn))
+}
+
+// RegisterSecurityTokenServiceHandlerClient registers the http handlers for service SecurityTokenService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SecurityTokenServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SecurityTokenServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "SecurityTokenServiceClient" to call the correct interceptors.
+func RegisterSecurityTokenServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SecurityTokenServiceClient) error {
+
+ mux.Handle("POST", pattern_SecurityTokenService_Exchange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SecurityTokenService_Exchange_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_Exchange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_SecurityTokenService_Exchange_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/Exchange", runtime.WithHTTPPathPattern("/sts/exchange"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SecurityTokenService_Exchange_1(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_Exchange_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_SecurityTokenService_ExchangeRefreshToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken", runtime.WithHTTPPathPattern("/sts/exchange_refresh_token"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_SecurityTokenService_ExchangeRefreshToken_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_SecurityTokenService_ExchangeRefreshToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_SecurityTokenService_Exchange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange"}, ""))
+
+ pattern_SecurityTokenService_Exchange_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange"}, ""))
+
+ pattern_SecurityTokenService_ExchangeRefreshToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"sts", "exchange_refresh_token"}, ""))
+)
+
+var (
+ forward_SecurityTokenService_Exchange_0 = runtime.ForwardResponseMessage
+
+ forward_SecurityTokenService_Exchange_1 = runtime.ForwardResponseMessage
+
+ forward_SecurityTokenService_ExchangeRefreshToken_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/oidc/v1/oidc.platform.proto b/proto/platform/oidc/v1/oidc.platform.proto
new file mode 100644
index 00000000..df9442b3
--- /dev/null
+++ b/proto/platform/oidc/v1/oidc.platform.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/oidc/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.oidc.v1";
+option java_outer_classname = "PlatformOIDCProto";
+
+package chainguard.platform.oidc;
+
+import "google/api/annotations.proto";
+import "google/api/resource.proto";
+
+service SecurityTokenService {
+ rpc Exchange(ExchangeRequest) returns (RawToken) {
+ option (google.api.http) = {
+ post: "/sts/exchange"
+ additional_bindings {
+ get: "/sts/exchange"
+ }
+ };
+ }
+
+ rpc ExchangeRefreshToken(ExchangeRefreshTokenRequest) returns (TokenPair) {
+ option (google.api.http) = {
+ post: "/sts/exchange_refresh_token"
+ };
+ }
+}
+
+message ExchangeRefreshTokenRequest {
+ repeated string aud = 1;
+ string scope = 2;
+
+ // List of capabilities to request for the token.
+ repeated string cap = 3 [(google.api.resource_reference) = {
+ type: "chainguard.capabilities/Capability"
+ }];
+}
+
+message ExchangeRequest {
+ repeated string aud = 1;
+ string scope = 2;
+ string cluster = 3;
+ string identity = 4;
+
+ // List of capabilities to request for the token.
+ repeated string cap = 5 [(google.api.resource_reference) = {
+ type: "chainguard.capabilities/Capability"
+ }];
+
+ // Whether or not to include the upstream token in the response
+ bool include_upstream_token = 6;
+}
+
+message RawToken {
+ string token = 1;
+}
+
+// ExchangeRefreshToken returns a pair of token, in order to allow
+// refresh token to also be rotated.
+message TokenPair {
+ RawToken token = 1;
+ RawToken refresh_token = 2;
+}
diff --git a/proto/platform/oidc/v1/oidc.platform_grpc.pb.go b/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
new file mode 100644
index 00000000..80b069e5
--- /dev/null
+++ b/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
@@ -0,0 +1,146 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: oidc.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ SecurityTokenService_Exchange_FullMethodName = "/chainguard.platform.oidc.SecurityTokenService/Exchange"
+ SecurityTokenService_ExchangeRefreshToken_FullMethodName = "/chainguard.platform.oidc.SecurityTokenService/ExchangeRefreshToken"
+)
+
+// SecurityTokenServiceClient is the client API for SecurityTokenService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SecurityTokenServiceClient interface {
+ Exchange(ctx context.Context, in *ExchangeRequest, opts ...grpc.CallOption) (*RawToken, error)
+ ExchangeRefreshToken(ctx context.Context, in *ExchangeRefreshTokenRequest, opts ...grpc.CallOption) (*TokenPair, error)
+}
+
+type securityTokenServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSecurityTokenServiceClient(cc grpc.ClientConnInterface) SecurityTokenServiceClient {
+ return &securityTokenServiceClient{cc}
+}
+
+func (c *securityTokenServiceClient) Exchange(ctx context.Context, in *ExchangeRequest, opts ...grpc.CallOption) (*RawToken, error) {
+ out := new(RawToken)
+ err := c.cc.Invoke(ctx, SecurityTokenService_Exchange_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *securityTokenServiceClient) ExchangeRefreshToken(ctx context.Context, in *ExchangeRefreshTokenRequest, opts ...grpc.CallOption) (*TokenPair, error) {
+ out := new(TokenPair)
+ err := c.cc.Invoke(ctx, SecurityTokenService_ExchangeRefreshToken_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SecurityTokenServiceServer is the server API for SecurityTokenService service.
+// All implementations must embed UnimplementedSecurityTokenServiceServer
+// for forward compatibility
+type SecurityTokenServiceServer interface {
+ Exchange(context.Context, *ExchangeRequest) (*RawToken, error)
+ ExchangeRefreshToken(context.Context, *ExchangeRefreshTokenRequest) (*TokenPair, error)
+ mustEmbedUnimplementedSecurityTokenServiceServer()
+}
+
+// UnimplementedSecurityTokenServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedSecurityTokenServiceServer struct {
+}
+
+func (UnimplementedSecurityTokenServiceServer) Exchange(context.Context, *ExchangeRequest) (*RawToken, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Exchange not implemented")
+}
+func (UnimplementedSecurityTokenServiceServer) ExchangeRefreshToken(context.Context, *ExchangeRefreshTokenRequest) (*TokenPair, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ExchangeRefreshToken not implemented")
+}
+func (UnimplementedSecurityTokenServiceServer) mustEmbedUnimplementedSecurityTokenServiceServer() {}
+
+// UnsafeSecurityTokenServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SecurityTokenServiceServer will
+// result in compilation errors.
+type UnsafeSecurityTokenServiceServer interface {
+ mustEmbedUnimplementedSecurityTokenServiceServer()
+}
+
+func RegisterSecurityTokenServiceServer(s grpc.ServiceRegistrar, srv SecurityTokenServiceServer) {
+ s.RegisterService(&SecurityTokenService_ServiceDesc, srv)
+}
+
+func _SecurityTokenService_Exchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ExchangeRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SecurityTokenServiceServer).Exchange(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SecurityTokenService_Exchange_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SecurityTokenServiceServer).Exchange(ctx, req.(*ExchangeRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _SecurityTokenService_ExchangeRefreshToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ExchangeRefreshTokenRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SecurityTokenServiceServer).ExchangeRefreshToken(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: SecurityTokenService_ExchangeRefreshToken_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SecurityTokenServiceServer).ExchangeRefreshToken(ctx, req.(*ExchangeRefreshTokenRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// SecurityTokenService_ServiceDesc is the grpc.ServiceDesc for SecurityTokenService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var SecurityTokenService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.oidc.SecurityTokenService",
+ HandlerType: (*SecurityTokenServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Exchange",
+ Handler: _SecurityTokenService_Exchange_Handler,
+ },
+ {
+ MethodName: "ExchangeRefreshToken",
+ Handler: _SecurityTokenService_ExchangeRefreshToken_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "oidc.platform.proto",
+}
diff --git a/proto/platform/oidc/v1/test/mock_client.go b/proto/platform/oidc/v1/test/mock_client.go
new file mode 100644
index 00000000..5b04441b
--- /dev/null
+++ b/proto/platform/oidc/v1/test/mock_client.go
@@ -0,0 +1,26 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+)
+
+type MockOIDCClient struct {
+ OnClose error
+
+ STSClient MockSTSClient
+}
+
+var _ oidc.Clients = (*MockOIDCClient)(nil)
+
+func (m MockOIDCClient) STS() oidc.SecurityTokenServiceClient {
+ return &m.STSClient
+}
+
+func (m MockOIDCClient) Close() error {
+ return m.OnClose
+}
diff --git a/proto/platform/oidc/v1/test/mock_sts.go b/proto/platform/oidc/v1/test/mock_sts.go
new file mode 100644
index 00000000..2c19fb58
--- /dev/null
+++ b/proto/platform/oidc/v1/test/mock_sts.go
@@ -0,0 +1,53 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+)
+
+var _ oidc.SecurityTokenServiceClient = (*MockSTSClient)(nil)
+
+type MockSTSClient struct {
+ OnExchange []STSOnExchange
+ OnGetAccessToken []STSOnGetAccessToken
+}
+
+func (m MockSTSClient) Exchange(_ context.Context, given *oidc.ExchangeRequest, _ ...grpc.CallOption) (*oidc.RawToken, error) {
+ for _, o := range m.OnExchange {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Exchanged, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockSTSClient) ExchangeRefreshToken(_ context.Context, given *oidc.ExchangeRefreshTokenRequest, _ ...grpc.CallOption) (*oidc.TokenPair, error) {
+ for _, o := range m.OnGetAccessToken {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Exchanged, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+type STSOnExchange struct {
+ Given *oidc.ExchangeRequest
+ Exchanged *oidc.RawToken
+ Error error
+}
+
+type STSOnGetAccessToken struct {
+ Given *oidc.ExchangeRefreshTokenRequest
+ Exchanged *oidc.TokenPair
+ Error error
+}
diff --git a/proto/platform/ping/v1/clients.go b/proto/platform/ping/v1/clients.go
new file mode 100644
index 00000000..2f775fcf
--- /dev/null
+++ b/proto/platform/ping/v1/clients.go
@@ -0,0 +1,80 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Clients interface {
+ Ping() PingServiceClient
+
+ Close() error
+}
+
+func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
+ uri, err := url.Parse(addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse ping service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*uri)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ ping: NewPingServiceClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ ping: NewPingServiceClient(conn),
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ ping PingServiceClient
+ conn *grpc.ClientConn
+}
+
+func (c *clients) Ping() PingServiceClient {
+ return c.ping
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/ping/v1/doc.go b/proto/platform/ping/v1/doc.go
new file mode 100644
index 00000000..598bbb48
--- /dev/null
+++ b/proto/platform/ping/v1/doc.go
@@ -0,0 +1,10 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing ping interactions for the Platform.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. ping.platform.proto
+package v1
diff --git a/proto/platform/ping/v1/ping.platform.pb.go b/proto/platform/ping/v1/ping.platform.pb.go
new file mode 100644
index 00000000..601fda17
--- /dev/null
+++ b/proto/platform/ping/v1/ping.platform.pb.go
@@ -0,0 +1,216 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: ping.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type PingRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *PingRequest) Reset() {
+ *x = PingRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_ping_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PingRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PingRequest) ProtoMessage() {}
+
+func (x *PingRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_ping_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead.
+func (*PingRequest) Descriptor() ([]byte, []int) {
+ return file_ping_platform_proto_rawDescGZIP(), []int{0}
+}
+
+type Response struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+}
+
+func (x *Response) Reset() {
+ *x = Response{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_ping_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Response) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Response) ProtoMessage() {}
+
+func (x *Response) ProtoReflect() protoreflect.Message {
+ mi := &file_ping_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Response.ProtoReflect.Descriptor instead.
+func (*Response) Descriptor() ([]byte, []int) {
+ return file_ping_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Response) GetResponse() string {
+ if x != nil {
+ return x.Response
+ }
+ return ""
+}
+
+var File_ping_platform_proto protoreflect.FileDescriptor
+
+var file_ping_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x1a,
+ 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61,
+ 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x7f, 0x0a, 0x0b,
+ 0x50, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x70, 0x0a, 0x04, 0x50,
+ 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x50,
+ 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31,
+ 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0x42, 0x65, 0x0a,
+ 0x23, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x69, 0x6e,
+ 0x67, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x69,
+ 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x69, 0x6e,
+ 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_ping_platform_proto_rawDescOnce sync.Once
+ file_ping_platform_proto_rawDescData = file_ping_platform_proto_rawDesc
+)
+
+func file_ping_platform_proto_rawDescGZIP() []byte {
+ file_ping_platform_proto_rawDescOnce.Do(func() {
+ file_ping_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_ping_platform_proto_rawDescData)
+ })
+ return file_ping_platform_proto_rawDescData
+}
+
+var file_ping_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_ping_platform_proto_goTypes = []interface{}{
+ (*PingRequest)(nil), // 0: chainguard.platform.ping.PingRequest
+ (*Response)(nil), // 1: chainguard.platform.ping.Response
+}
+var file_ping_platform_proto_depIdxs = []int32{
+ 0, // 0: chainguard.platform.ping.PingService.Ping:input_type -> chainguard.platform.ping.PingRequest
+ 1, // 1: chainguard.platform.ping.PingService.Ping:output_type -> chainguard.platform.ping.Response
+ 1, // [1:2] is the sub-list for method output_type
+ 0, // [0:1] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_ping_platform_proto_init() }
+func file_ping_platform_proto_init() {
+ if File_ping_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_ping_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PingRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_ping_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Response); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_ping_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 2,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_ping_platform_proto_goTypes,
+ DependencyIndexes: file_ping_platform_proto_depIdxs,
+ MessageInfos: file_ping_platform_proto_msgTypes,
+ }.Build()
+ File_ping_platform_proto = out.File
+ file_ping_platform_proto_rawDesc = nil
+ file_ping_platform_proto_goTypes = nil
+ file_ping_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/ping/v1/ping.platform.pb.gw.go b/proto/platform/ping/v1/ping.platform.pb.gw.go
new file mode 100644
index 00000000..c934acab
--- /dev/null
+++ b/proto/platform/ping/v1/ping.platform.pb.gw.go
@@ -0,0 +1,153 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: ping.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_PingService_Ping_0(ctx context.Context, marshaler runtime.Marshaler, client PingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PingRequest
+ var metadata runtime.ServerMetadata
+
+ msg, err := client.Ping(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_PingService_Ping_0(ctx context.Context, marshaler runtime.Marshaler, server PingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PingRequest
+ var metadata runtime.ServerMetadata
+
+ msg, err := server.Ping(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterPingServiceHandlerServer registers the http handlers for service PingService to "mux".
+// UnaryRPC :call PingServiceServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPingServiceHandlerFromEndpoint instead.
+func RegisterPingServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PingServiceServer) error {
+
+ mux.Handle("GET", pattern_PingService_Ping_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.ping.PingService/Ping", runtime.WithHTTPPathPattern("/ping/v1/ping"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_PingService_Ping_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_PingService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterPingServiceHandlerFromEndpoint is same as RegisterPingServiceHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterPingServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterPingServiceHandler(ctx, mux, conn)
+}
+
+// RegisterPingServiceHandler registers the http handlers for service PingService to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterPingServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterPingServiceHandlerClient(ctx, mux, NewPingServiceClient(conn))
+}
+
+// RegisterPingServiceHandlerClient registers the http handlers for service PingService
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PingServiceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PingServiceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "PingServiceClient" to call the correct interceptors.
+func RegisterPingServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PingServiceClient) error {
+
+ mux.Handle("GET", pattern_PingService_Ping_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.ping.PingService/Ping", runtime.WithHTTPPathPattern("/ping/v1/ping"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_PingService_Ping_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_PingService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_PingService_Ping_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 0}, []string{"ping", "v1"}, ""))
+)
+
+var (
+ forward_PingService_Ping_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/ping/v1/ping.platform.proto b/proto/platform/ping/v1/ping.platform.proto
new file mode 100644
index 00000000..86f8d93d
--- /dev/null
+++ b/proto/platform/ping/v1/ping.platform.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/ping/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.ping.v1";
+option java_outer_classname = "PlatformPingProto";
+
+package chainguard.platform.ping;
+
+import "google/api/annotations.proto";
+import "annotations/auth.proto";
+
+service PingService {
+ rpc Ping(PingRequest) returns (Response) {
+ option (google.api.http) = {
+ get: "/ping/v1/ping"
+ };
+ option (chainguard.annotations.iam) = {
+ // This method doesn't require authentication.
+ disabled: {}
+ };
+ }
+}
+
+message PingRequest {}
+
+message Response {
+ string response = 1;
+}
diff --git a/proto/platform/ping/v1/ping.platform_grpc.pb.go b/proto/platform/ping/v1/ping.platform_grpc.pb.go
new file mode 100644
index 00000000..f4feefd8
--- /dev/null
+++ b/proto/platform/ping/v1/ping.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: ping.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ PingService_Ping_FullMethodName = "/chainguard.platform.ping.PingService/Ping"
+)
+
+// PingServiceClient is the client API for PingService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type PingServiceClient interface {
+ Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Response, error)
+}
+
+type pingServiceClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewPingServiceClient(cc grpc.ClientConnInterface) PingServiceClient {
+ return &pingServiceClient{cc}
+}
+
+func (c *pingServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Response, error) {
+ out := new(Response)
+ err := c.cc.Invoke(ctx, PingService_Ping_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// PingServiceServer is the server API for PingService service.
+// All implementations must embed UnimplementedPingServiceServer
+// for forward compatibility
+type PingServiceServer interface {
+ Ping(context.Context, *PingRequest) (*Response, error)
+ mustEmbedUnimplementedPingServiceServer()
+}
+
+// UnimplementedPingServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedPingServiceServer struct {
+}
+
+func (UnimplementedPingServiceServer) Ping(context.Context, *PingRequest) (*Response, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented")
+}
+func (UnimplementedPingServiceServer) mustEmbedUnimplementedPingServiceServer() {}
+
+// UnsafePingServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to PingServiceServer will
+// result in compilation errors.
+type UnsafePingServiceServer interface {
+ mustEmbedUnimplementedPingServiceServer()
+}
+
+func RegisterPingServiceServer(s grpc.ServiceRegistrar, srv PingServiceServer) {
+ s.RegisterService(&PingService_ServiceDesc, srv)
+}
+
+func _PingService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PingRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PingServiceServer).Ping(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: PingService_Ping_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PingServiceServer).Ping(ctx, req.(*PingRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// PingService_ServiceDesc is the grpc.ServiceDesc for PingService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var PingService_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.ping.PingService",
+ HandlerType: (*PingServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Ping",
+ Handler: _PingService_Ping_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "ping.platform.proto",
+}
diff --git a/proto/platform/ping/v1/test/ping.go b/proto/platform/ping/v1/test/ping.go
new file mode 100644
index 00000000..e91d6763
--- /dev/null
+++ b/proto/platform/ping/v1/test/ping.go
@@ -0,0 +1,52 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "google.golang.org/grpc"
+
+ ping "chainguard.dev/sdk/proto/platform/ping/v1"
+)
+
+var _ ping.Clients = (*MockPingServiceClients)(nil)
+
+type MockPingServiceClients struct {
+ OnClose error
+
+ PingServiceClient MockPingServiceClient
+}
+
+func (m MockPingServiceClients) Ping() ping.PingServiceClient {
+ return &m.PingServiceClient
+}
+
+func (m MockPingServiceClients) Close() error {
+ return m.OnClose
+}
+
+var _ ping.PingServiceClient = (*MockPingServiceClient)(nil)
+
+type MockPingServiceClient struct {
+ ping.PingServiceClient
+
+ OnPing Ping
+}
+
+type Ping struct {
+ Given *ping.PingRequest
+ Response *ping.Response
+ Error error
+}
+
+func (m MockPingServiceClient) Ping(_ context.Context, _ *ping.PingRequest, _ ...grpc.CallOption) (*ping.Response, error) {
+ if m.OnPing.Given == nil {
+ return nil, fmt.Errorf("OnPing.Given defined to be %v", m.OnPing.Given)
+ }
+ return &ping.Response{}, nil
+}
diff --git a/proto/platform/registry/v1/clients.go b/proto/platform/registry/v1/clients.go
new file mode 100644
index 00000000..a52a2861
--- /dev/null
+++ b/proto/platform/registry/v1/clients.go
@@ -0,0 +1,81 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Clients interface {
+ Registry() RegistryClient
+
+ Close() error
+}
+
+func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
+ uri, err := url.Parse(addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse tenant service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*uri)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ registry: NewRegistryClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ registry: NewRegistryClient(conn),
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ registry RegistryClient
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) Registry() RegistryClient {
+ return c.registry
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/registry/v1/doc.go b/proto/platform/registry/v1/doc.go
new file mode 100644
index 00000000..006b05d9
--- /dev/null
+++ b/proto/platform/registry/v1/doc.go
@@ -0,0 +1,10 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing Registry interactions.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. -I ../../tenant/v1 --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. registry.platform.proto
+package v1
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
new file mode 100644
index 00000000..5cf6d6c0
--- /dev/null
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -0,0 +1,3295 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: registry.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ v11 "chainguard.dev/sdk/proto/platform/tenant/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type CatalogTier int32
+
+const (
+ CatalogTier_UNKNOWN CatalogTier = 0
+ CatalogTier_FREE CatalogTier = 1
+ CatalogTier_STANDARD CatalogTier = 2
+ CatalogTier_PREMIUM CatalogTier = 3
+)
+
+// Enum value maps for CatalogTier.
+var (
+ CatalogTier_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "FREE",
+ 2: "STANDARD",
+ 3: "PREMIUM",
+ }
+ CatalogTier_value = map[string]int32{
+ "UNKNOWN": 0,
+ "FREE": 1,
+ "STANDARD": 2,
+ "PREMIUM": 3,
+ }
+)
+
+func (x CatalogTier) Enum() *CatalogTier {
+ p := new(CatalogTier)
+ *p = x
+ return p
+}
+
+func (x CatalogTier) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (CatalogTier) Descriptor() protoreflect.EnumDescriptor {
+ return file_registry_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (CatalogTier) Type() protoreflect.EnumType {
+ return &file_registry_platform_proto_enumTypes[0]
+}
+
+func (x CatalogTier) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CatalogTier.Descriptor instead.
+func (CatalogTier) EnumDescriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{0}
+}
+
+type Repo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the identifier of this specific repository.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name is the human-readable name of the repository.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // catalog_tier is the catalog tier this repository belongs to.
+ CatalogTier CatalogTier `protobuf:"varint,3,opt,name=catalog_tier,json=catalogTier,proto3,enum=chainguard.platform.registry.CatalogTier" json:"catalog_tier,omitempty"`
+ // bundles is a list of tags/labels that allow us to group repositories to each other for sales purposes.
+ Bundles []string `protobuf:"bytes,4,rep,name=bundles,proto3" json:"bundles,omitempty"`
+ // readme is raw Markdown file contents describing the repo.
+ Readme string `protobuf:"bytes,5,opt,name=readme,proto3" json:"readme,omitempty"`
+ // (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
+ // NOTE: This property can only be set by Chainguard.
+ SyncConfig *SyncConfig `protobuf:"bytes,6,opt,name=sync_config,json=syncConfig,proto3" json:"sync_config,omitempty"`
+}
+
+func (x *Repo) Reset() {
+ *x = Repo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Repo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Repo) ProtoMessage() {}
+
+func (x *Repo) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Repo.ProtoReflect.Descriptor instead.
+func (*Repo) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Repo) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Repo) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Repo) GetCatalogTier() CatalogTier {
+ if x != nil {
+ return x.CatalogTier
+ }
+ return CatalogTier_UNKNOWN
+}
+
+func (x *Repo) GetBundles() []string {
+ if x != nil {
+ return x.Bundles
+ }
+ return nil
+}
+
+func (x *Repo) GetReadme() string {
+ if x != nil {
+ return x.Readme
+ }
+ return ""
+}
+
+func (x *Repo) GetSyncConfig() *SyncConfig {
+ if x != nil {
+ return x.SyncConfig
+ }
+ return nil
+}
+
+type SyncConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Repo ID to sync from.
+ Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
+ // Controls whether exported tags will be uniquely labeled.
+ UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
+}
+
+func (x *SyncConfig) Reset() {
+ *x = SyncConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SyncConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SyncConfig) ProtoMessage() {}
+
+func (x *SyncConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SyncConfig.ProtoReflect.Descriptor instead.
+func (*SyncConfig) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SyncConfig) GetSource() string {
+ if x != nil {
+ return x.Source
+ }
+ return ""
+}
+
+func (x *SyncConfig) GetUniqueTags() bool {
+ if x != nil {
+ return x.UniqueTags
+ }
+ return false
+}
+
+type CreateRepoRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ Repo *Repo `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
+}
+
+func (x *CreateRepoRequest) Reset() {
+ *x = CreateRepoRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateRepoRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateRepoRequest) ProtoMessage() {}
+
+func (x *CreateRepoRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateRepoRequest.ProtoReflect.Descriptor instead.
+func (*CreateRepoRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *CreateRepoRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateRepoRequest) GetRepo() *Repo {
+ if x != nil {
+ return x.Repo
+ }
+ return nil
+}
+
+type DeleteRepoRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ID, UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteRepoRequest) Reset() {
+ *x = DeleteRepoRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteRepoRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteRepoRequest) ProtoMessage() {}
+
+func (x *DeleteRepoRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteRepoRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRepoRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *DeleteRepoRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type RepoList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Repo `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RepoList) Reset() {
+ *x = RepoList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RepoList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepoList) ProtoMessage() {}
+
+func (x *RepoList) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RepoList.ProtoReflect.Descriptor instead.
+func (*RepoList) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *RepoList) GetItems() []*Repo {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type RepoFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // name is the exact name of the record.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // id is the identifier of this specific repository.
+ Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *RepoFilter) Reset() {
+ *x = RepoFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RepoFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepoFilter) ProtoMessage() {}
+
+func (x *RepoFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RepoFilter.ProtoReflect.Descriptor instead.
+func (*RepoFilter) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *RepoFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *RepoFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *RepoFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type CreateTagRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ Tag *Tag `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"`
+}
+
+func (x *CreateTagRequest) Reset() {
+ *x = CreateTagRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateTagRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateTagRequest) ProtoMessage() {}
+
+func (x *CreateTagRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateTagRequest.ProtoReflect.Descriptor instead.
+func (*CreateTagRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CreateTagRequest) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *CreateTagRequest) GetTag() *Tag {
+ if x != nil {
+ return x.Tag
+ }
+ return nil
+}
+
+type DeleteTagRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ID, UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteTagRequest) Reset() {
+ *x = DeleteTagRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteTagRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteTagRequest) ProtoMessage() {}
+
+func (x *DeleteTagRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteTagRequest.ProtoReflect.Descriptor instead.
+func (*DeleteTagRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *DeleteTagRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type Tag struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, identifier of this Tag, a UIDP under a Repo.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name, the unique name of the Tag.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // digest, the digest of the manifest with this tag.
+ Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"`
+ // last time this tag was updated.
+ LastUpdated *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"`
+ // deprecated, true if the tag is deprecated.
+ Deprecated bool `protobuf:"varint,5,opt,name=deprecated,proto3" json:"deprecated,omitempty"`
+ // bundles is a list of tags/labels for sales purposes.
+ Bundles []string `protobuf:"bytes,6,rep,name=bundles,proto3" json:"bundles,omitempty"`
+}
+
+func (x *Tag) Reset() {
+ *x = Tag{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Tag) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Tag) ProtoMessage() {}
+
+func (x *Tag) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
+func (*Tag) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *Tag) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Tag) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Tag) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+func (x *Tag) GetLastUpdated() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastUpdated
+ }
+ return nil
+}
+
+func (x *Tag) GetDeprecated() bool {
+ if x != nil {
+ return x.Deprecated
+ }
+ return false
+}
+
+func (x *Tag) GetBundles() []string {
+ if x != nil {
+ return x.Bundles
+ }
+ return nil
+}
+
+type TagFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // The unique name of the Tag to list.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // The timestamp after which returned records were updated.
+ UpdatedSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_since,json=updatedSince,proto3" json:"updated_since,omitempty"`
+ // Exclude tags of the form "sha256-*".
+ ExcludeReferrers bool `protobuf:"varint,6,opt,name=exclude_referrers,json=excludeReferrers,proto3" json:"exclude_referrers,omitempty"`
+ // Exclude tags of the form "*-20yymmdd".
+ ExcludeDates bool `protobuf:"varint,7,opt,name=exclude_dates,json=excludeDates,proto3" json:"exclude_dates,omitempty"`
+ // Exclude tags of the form "*-r[0-9]+".
+ ExcludeEpochs bool `protobuf:"varint,8,opt,name=exclude_epochs,json=excludeEpochs,proto3" json:"exclude_epochs,omitempty"`
+ Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *TagFilter) Reset() {
+ *x = TagFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TagFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TagFilter) ProtoMessage() {}
+
+func (x *TagFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TagFilter.ProtoReflect.Descriptor instead.
+func (*TagFilter) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *TagFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *TagFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *TagFilter) GetUpdatedSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdatedSince
+ }
+ return nil
+}
+
+func (x *TagFilter) GetExcludeReferrers() bool {
+ if x != nil {
+ return x.ExcludeReferrers
+ }
+ return false
+}
+
+func (x *TagFilter) GetExcludeDates() bool {
+ if x != nil {
+ return x.ExcludeDates
+ }
+ return false
+}
+
+func (x *TagFilter) GetExcludeEpochs() bool {
+ if x != nil {
+ return x.ExcludeEpochs
+ }
+ return false
+}
+
+func (x *TagFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type TagList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Tag `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *TagList) Reset() {
+ *x = TagList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TagList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TagList) ProtoMessage() {}
+
+func (x *TagList) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TagList.ProtoReflect.Descriptor instead.
+func (*TagList) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *TagList) GetItems() []*Tag {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type TagHistoryFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // tag UIDP to list history for.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ Start *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start,proto3" json:"start,omitempty"`
+ End *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end,proto3" json:"end,omitempty"`
+}
+
+func (x *TagHistoryFilter) Reset() {
+ *x = TagHistoryFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TagHistoryFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TagHistoryFilter) ProtoMessage() {}
+
+func (x *TagHistoryFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TagHistoryFilter.ProtoReflect.Descriptor instead.
+func (*TagHistoryFilter) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *TagHistoryFilter) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *TagHistoryFilter) GetStart() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Start
+ }
+ return nil
+}
+
+func (x *TagHistoryFilter) GetEnd() *timestamppb.Timestamp {
+ if x != nil {
+ return x.End
+ }
+ return nil
+}
+
+type TagHistoryList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*TagHistory `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *TagHistoryList) Reset() {
+ *x = TagHistoryList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TagHistoryList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TagHistoryList) ProtoMessage() {}
+
+func (x *TagHistoryList) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TagHistoryList.ProtoReflect.Descriptor instead.
+func (*TagHistoryList) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *TagHistoryList) GetItems() []*TagHistory {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type TagHistory struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ UpdateTimestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=update_timestamp,json=updateTimestamp,proto3" json:"update_timestamp,omitempty"`
+ Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
+}
+
+func (x *TagHistory) Reset() {
+ *x = TagHistory{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *TagHistory) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TagHistory) ProtoMessage() {}
+
+func (x *TagHistory) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TagHistory.ProtoReflect.Descriptor instead.
+func (*TagHistory) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *TagHistory) GetUpdateTimestamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.UpdateTimestamp
+ }
+ return nil
+}
+
+func (x *TagHistory) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+type DiffImageResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Packages *PackagesDiff `protobuf:"bytes,1,opt,name=packages,proto3" json:"packages,omitempty"`
+ Vulnerabilities *VulnerabilitiesDiff `protobuf:"bytes,2,opt,name=vulnerabilities,proto3" json:"vulnerabilities,omitempty"`
+ Config *ImageConfigDiff `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
+ // warnings is a list of warning messages to return to the requesting client.
+ // Warning messages describe a problem the client making the DiffImageRequest should correct or be aware of.
+ // Warnings over 256 characters and large numbers of warnings may be truncated.
+ Warnings []string `protobuf:"bytes,5,rep,name=warnings,proto3" json:"warnings,omitempty"`
+}
+
+func (x *DiffImageResponse) Reset() {
+ *x = DiffImageResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DiffImageResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiffImageResponse) ProtoMessage() {}
+
+func (x *DiffImageResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DiffImageResponse.ProtoReflect.Descriptor instead.
+func (*DiffImageResponse) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *DiffImageResponse) GetPackages() *PackagesDiff {
+ if x != nil {
+ return x.Packages
+ }
+ return nil
+}
+
+func (x *DiffImageResponse) GetVulnerabilities() *VulnerabilitiesDiff {
+ if x != nil {
+ return x.Vulnerabilities
+ }
+ return nil
+}
+
+func (x *DiffImageResponse) GetConfig() *ImageConfigDiff {
+ if x != nil {
+ return x.Config
+ }
+ return nil
+}
+
+func (x *DiffImageResponse) GetWarnings() []string {
+ if x != nil {
+ return x.Warnings
+ }
+ return nil
+}
+
+type ImageConfigDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Changed *ChangedImageConfig `protobuf:"bytes,1,opt,name=changed,proto3" json:"changed,omitempty"`
+}
+
+func (x *ImageConfigDiff) Reset() {
+ *x = ImageConfigDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImageConfigDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageConfigDiff) ProtoMessage() {}
+
+func (x *ImageConfigDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageConfigDiff.ProtoReflect.Descriptor instead.
+func (*ImageConfigDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *ImageConfigDiff) GetChanged() *ChangedImageConfig {
+ if x != nil {
+ return x.Changed
+ }
+ return nil
+}
+
+type ChangedImageConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ChangedUser *ChangedImageConfig_ChangedUser `protobuf:"bytes,1,opt,name=changedUser,proto3" json:"changedUser,omitempty"`
+ ChangedWorkingDir *ChangedImageConfig_ChangedWorkingDir `protobuf:"bytes,2,opt,name=changedWorkingDir,proto3" json:"changedWorkingDir,omitempty"`
+ Entrypoints *ChangedImageConfig_EntrypointDiff `protobuf:"bytes,3,opt,name=entrypoints,proto3" json:"entrypoints,omitempty"`
+ Envs *ChangedImageConfig_EnvDiff `protobuf:"bytes,4,opt,name=envs,proto3" json:"envs,omitempty"`
+ Cmds *ChangedImageConfig_CmdDiff `protobuf:"bytes,5,opt,name=cmds,proto3" json:"cmds,omitempty"`
+ ChangedStopSignal *ChangedImageConfig_ChangedStopSignal `protobuf:"bytes,6,opt,name=changedStopSignal,proto3" json:"changedStopSignal,omitempty"`
+ Volumes *ChangedImageConfig_VolumeDiff `protobuf:"bytes,7,opt,name=volumes,proto3" json:"volumes,omitempty"`
+}
+
+func (x *ChangedImageConfig) Reset() {
+ *x = ChangedImageConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig) ProtoMessage() {}
+
+func (x *ChangedImageConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *ChangedImageConfig) GetChangedUser() *ChangedImageConfig_ChangedUser {
+ if x != nil {
+ return x.ChangedUser
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetChangedWorkingDir() *ChangedImageConfig_ChangedWorkingDir {
+ if x != nil {
+ return x.ChangedWorkingDir
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetEntrypoints() *ChangedImageConfig_EntrypointDiff {
+ if x != nil {
+ return x.Entrypoints
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetEnvs() *ChangedImageConfig_EnvDiff {
+ if x != nil {
+ return x.Envs
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetCmds() *ChangedImageConfig_CmdDiff {
+ if x != nil {
+ return x.Cmds
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetChangedStopSignal() *ChangedImageConfig_ChangedStopSignal {
+ if x != nil {
+ return x.ChangedStopSignal
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig) GetVolumes() *ChangedImageConfig_VolumeDiff {
+ if x != nil {
+ return x.Volumes
+ }
+ return nil
+}
+
+type PackagesDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added []*PackageReference `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
+ Removed []*PackageReference `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
+ Changed []*PackagesDiff_ChangedPackageReference `protobuf:"bytes,3,rep,name=changed,proto3" json:"changed,omitempty"`
+}
+
+func (x *PackagesDiff) Reset() {
+ *x = PackagesDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PackagesDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PackagesDiff) ProtoMessage() {}
+
+func (x *PackagesDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PackagesDiff.ProtoReflect.Descriptor instead.
+func (*PackagesDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *PackagesDiff) GetAdded() []*PackageReference {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *PackagesDiff) GetRemoved() []*PackageReference {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+func (x *PackagesDiff) GetChanged() []*PackagesDiff_ChangedPackageReference {
+ if x != nil {
+ return x.Changed
+ }
+ return nil
+}
+
+type VersionReference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"`
+}
+
+func (x *VersionReference) Reset() {
+ *x = VersionReference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VersionReference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VersionReference) ProtoMessage() {}
+
+func (x *VersionReference) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VersionReference.ProtoReflect.Descriptor instead.
+func (*VersionReference) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *VersionReference) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *VersionReference) GetReference() string {
+ if x != nil {
+ return x.Reference
+ }
+ return ""
+}
+
+// PackageReference is a reference to a package, containing minimal information to identify it.
+type PackageReference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ Reference string `protobuf:"bytes,3,opt,name=reference,proto3" json:"reference,omitempty"`
+}
+
+func (x *PackageReference) Reset() {
+ *x = PackageReference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PackageReference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PackageReference) ProtoMessage() {}
+
+func (x *PackageReference) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PackageReference.ProtoReflect.Descriptor instead.
+func (*PackageReference) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *PackageReference) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *PackageReference) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *PackageReference) GetReference() string {
+ if x != nil {
+ return x.Reference
+ }
+ return ""
+}
+
+type VulnerabilitiesDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added []*VulnerabilityReference `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
+ Removed []*VulnerabilityReference `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
+ Metadata []*ScannerMetadata `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty"`
+}
+
+func (x *VulnerabilitiesDiff) Reset() {
+ *x = VulnerabilitiesDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilitiesDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilitiesDiff) ProtoMessage() {}
+
+func (x *VulnerabilitiesDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilitiesDiff.ProtoReflect.Descriptor instead.
+func (*VulnerabilitiesDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *VulnerabilitiesDiff) GetAdded() []*VulnerabilityReference {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *VulnerabilitiesDiff) GetRemoved() []*VulnerabilityReference {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+func (x *VulnerabilitiesDiff) GetMetadata() []*ScannerMetadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+type ScannerMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
+ Scanner *v11.Scanner `protobuf:"bytes,2,opt,name=scanner,proto3" json:"scanner,omitempty"`
+ VulnerabilityDbLastBuildTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=vulnerability_db_last_build_time,json=vulnerabilityDbLastBuildTime,proto3" json:"vulnerability_db_last_build_time,omitempty"`
+ VulnerabilityDbSchemaVersion string `protobuf:"bytes,4,opt,name=vulnerability_db_schema_version,json=vulnerabilityDbSchemaVersion,proto3" json:"vulnerability_db_schema_version,omitempty"`
+}
+
+func (x *ScannerMetadata) Reset() {
+ *x = ScannerMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ScannerMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ScannerMetadata) ProtoMessage() {}
+
+func (x *ScannerMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ScannerMetadata.ProtoReflect.Descriptor instead.
+func (*ScannerMetadata) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *ScannerMetadata) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+func (x *ScannerMetadata) GetScanner() *v11.Scanner {
+ if x != nil {
+ return x.Scanner
+ }
+ return nil
+}
+
+func (x *ScannerMetadata) GetVulnerabilityDbLastBuildTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.VulnerabilityDbLastBuildTime
+ }
+ return nil
+}
+
+func (x *ScannerMetadata) GetVulnerabilityDbSchemaVersion() string {
+ if x != nil {
+ return x.VulnerabilityDbSchemaVersion
+ }
+ return ""
+}
+
+// VulnerabilityReference is a reference to a vulnerability, containing minimal information to identify it.
+type VulnerabilityReference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"`
+ Severity string `protobuf:"bytes,3,opt,name=severity,proto3" json:"severity,omitempty"`
+}
+
+func (x *VulnerabilityReference) Reset() {
+ *x = VulnerabilityReference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityReference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityReference) ProtoMessage() {}
+
+func (x *VulnerabilityReference) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityReference.ProtoReflect.Descriptor instead.
+func (*VulnerabilityReference) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *VulnerabilityReference) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnerabilityReference) GetReference() string {
+ if x != nil {
+ return x.Reference
+ }
+ return ""
+}
+
+func (x *VulnerabilityReference) GetSeverity() string {
+ if x != nil {
+ return x.Severity
+ }
+ return ""
+}
+
+// DiffImageRequests are used to request a diff between two images.
+type DiffImageRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The UIDP of the image repo to diff against.
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ FromDigest string `protobuf:"bytes,2,opt,name=from_digest,json=fromDigest,proto3" json:"from_digest,omitempty"`
+ ToDigest string `protobuf:"bytes,3,opt,name=to_digest,json=toDigest,proto3" json:"to_digest,omitempty"`
+}
+
+func (x *DiffImageRequest) Reset() {
+ *x = DiffImageRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DiffImageRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiffImageRequest) ProtoMessage() {}
+
+func (x *DiffImageRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DiffImageRequest.ProtoReflect.Descriptor instead.
+func (*DiffImageRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *DiffImageRequest) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *DiffImageRequest) GetFromDigest() string {
+ if x != nil {
+ return x.FromDigest
+ }
+ return ""
+}
+
+func (x *DiffImageRequest) GetToDigest() string {
+ if x != nil {
+ return x.ToDigest
+ }
+ return ""
+}
+
+type SbomRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The UIDP of the image repo to get an SBOM for.
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ // The digest of the image to get an SBOM for.
+ Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
+}
+
+func (x *SbomRequest) Reset() {
+ *x = SbomRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SbomRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SbomRequest) ProtoMessage() {}
+
+func (x *SbomRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SbomRequest.ProtoReflect.Descriptor instead.
+func (*SbomRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *SbomRequest) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *SbomRequest) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+type VulnReportRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The UIDP of the image repo to get a VulnReport for.
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ // The digest of the image to get a VulnReport for.
+ Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
+}
+
+func (x *VulnReportRequest) Reset() {
+ *x = VulnReportRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnReportRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnReportRequest) ProtoMessage() {}
+
+func (x *VulnReportRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnReportRequest.ProtoReflect.Descriptor instead.
+func (*VulnReportRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *VulnReportRequest) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *VulnReportRequest) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+type ChangedImageConfig_ChangedUser struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
+ Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
+}
+
+func (x *ChangedImageConfig_ChangedUser) Reset() {
+ *x = ChangedImageConfig_ChangedUser{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_ChangedUser) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_ChangedUser) ProtoMessage() {}
+
+func (x *ChangedImageConfig_ChangedUser) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_ChangedUser.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_ChangedUser) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 0}
+}
+
+func (x *ChangedImageConfig_ChangedUser) GetCurrent() string {
+ if x != nil {
+ return x.Current
+ }
+ return ""
+}
+
+func (x *ChangedImageConfig_ChangedUser) GetPrevious() string {
+ if x != nil {
+ return x.Previous
+ }
+ return ""
+}
+
+type ChangedImageConfig_ChangedWorkingDir struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
+ Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
+}
+
+func (x *ChangedImageConfig_ChangedWorkingDir) Reset() {
+ *x = ChangedImageConfig_ChangedWorkingDir{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_ChangedWorkingDir) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_ChangedWorkingDir) ProtoMessage() {}
+
+func (x *ChangedImageConfig_ChangedWorkingDir) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_ChangedWorkingDir.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_ChangedWorkingDir) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 1}
+}
+
+func (x *ChangedImageConfig_ChangedWorkingDir) GetCurrent() string {
+ if x != nil {
+ return x.Current
+ }
+ return ""
+}
+
+func (x *ChangedImageConfig_ChangedWorkingDir) GetPrevious() string {
+ if x != nil {
+ return x.Previous
+ }
+ return ""
+}
+
+type ChangedImageConfig_EntrypointDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
+ Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
+}
+
+func (x *ChangedImageConfig_EntrypointDiff) Reset() {
+ *x = ChangedImageConfig_EntrypointDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_EntrypointDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_EntrypointDiff) ProtoMessage() {}
+
+func (x *ChangedImageConfig_EntrypointDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_EntrypointDiff.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_EntrypointDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 2}
+}
+
+func (x *ChangedImageConfig_EntrypointDiff) GetAdded() []string {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig_EntrypointDiff) GetRemoved() []string {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+type ChangedImageConfig_EnvDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
+ Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
+}
+
+func (x *ChangedImageConfig_EnvDiff) Reset() {
+ *x = ChangedImageConfig_EnvDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_EnvDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_EnvDiff) ProtoMessage() {}
+
+func (x *ChangedImageConfig_EnvDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_EnvDiff.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_EnvDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 3}
+}
+
+func (x *ChangedImageConfig_EnvDiff) GetAdded() []string {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig_EnvDiff) GetRemoved() []string {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+type ChangedImageConfig_CmdDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added []string `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty"`
+ Removed []string `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty"`
+}
+
+func (x *ChangedImageConfig_CmdDiff) Reset() {
+ *x = ChangedImageConfig_CmdDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_CmdDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_CmdDiff) ProtoMessage() {}
+
+func (x *ChangedImageConfig_CmdDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_CmdDiff.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_CmdDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 4}
+}
+
+func (x *ChangedImageConfig_CmdDiff) GetAdded() []string {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig_CmdDiff) GetRemoved() []string {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+type ChangedImageConfig_ChangedStopSignal struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Current string `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"`
+ Previous string `protobuf:"bytes,2,opt,name=previous,proto3" json:"previous,omitempty"`
+}
+
+func (x *ChangedImageConfig_ChangedStopSignal) Reset() {
+ *x = ChangedImageConfig_ChangedStopSignal{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_ChangedStopSignal) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_ChangedStopSignal) ProtoMessage() {}
+
+func (x *ChangedImageConfig_ChangedStopSignal) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_ChangedStopSignal.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_ChangedStopSignal) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 5}
+}
+
+func (x *ChangedImageConfig_ChangedStopSignal) GetCurrent() string {
+ if x != nil {
+ return x.Current
+ }
+ return ""
+}
+
+func (x *ChangedImageConfig_ChangedStopSignal) GetPrevious() string {
+ if x != nil {
+ return x.Previous
+ }
+ return ""
+}
+
+type ChangedImageConfig_Volume struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ChangedImageConfig_Volume) Reset() {
+ *x = ChangedImageConfig_Volume{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_Volume) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_Volume) ProtoMessage() {}
+
+func (x *ChangedImageConfig_Volume) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[32]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_Volume.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_Volume) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 6}
+}
+
+type ChangedImageConfig_VolumeDiff struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Added map[string]*ChangedImageConfig_Volume `protobuf:"bytes,1,rep,name=added,proto3" json:"added,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Removed map[string]*ChangedImageConfig_Volume `protobuf:"bytes,2,rep,name=removed,proto3" json:"removed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *ChangedImageConfig_VolumeDiff) Reset() {
+ *x = ChangedImageConfig_VolumeDiff{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ChangedImageConfig_VolumeDiff) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangedImageConfig_VolumeDiff) ProtoMessage() {}
+
+func (x *ChangedImageConfig_VolumeDiff) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[33]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangedImageConfig_VolumeDiff.ProtoReflect.Descriptor instead.
+func (*ChangedImageConfig_VolumeDiff) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{16, 7}
+}
+
+func (x *ChangedImageConfig_VolumeDiff) GetAdded() map[string]*ChangedImageConfig_Volume {
+ if x != nil {
+ return x.Added
+ }
+ return nil
+}
+
+func (x *ChangedImageConfig_VolumeDiff) GetRemoved() map[string]*ChangedImageConfig_Volume {
+ if x != nil {
+ return x.Removed
+ }
+ return nil
+}
+
+type PackagesDiff_ChangedPackageReference struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Current *VersionReference `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
+ Previous *VersionReference `protobuf:"bytes,3,opt,name=previous,proto3" json:"previous,omitempty"`
+}
+
+func (x *PackagesDiff_ChangedPackageReference) Reset() {
+ *x = PackagesDiff_ChangedPackageReference{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PackagesDiff_ChangedPackageReference) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PackagesDiff_ChangedPackageReference) ProtoMessage() {}
+
+func (x *PackagesDiff_ChangedPackageReference) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[36]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PackagesDiff_ChangedPackageReference.ProtoReflect.Descriptor instead.
+func (*PackagesDiff_ChangedPackageReference) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{17, 0}
+}
+
+func (x *PackagesDiff_ChangedPackageReference) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *PackagesDiff_ChangedPackageReference) GetCurrent() *VersionReference {
+ if x != nil {
+ return x.Current
+ }
+ return nil
+}
+
+func (x *PackagesDiff_ChangedPackageReference) GetPrevious() *VersionReference {
+ if x != nil {
+ return x.Previous
+ }
+ return nil
+}
+
+var File_registry_platform_proto protoreflect.FileDescriptor
+
+var file_registry_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e,
+ 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x76,
+ 0x75, 0x6c, 0x6e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f,
+ 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0c,
+ 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0b, 0x63,
+ 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75,
+ 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e,
+ 0x64, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0b,
+ 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
+ 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
+ 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
+ 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
+ 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
+ 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
+ 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
+ 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
+ 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
+ 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
+ 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+ 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
+ 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
+ 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
+ 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
+ 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
+ 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
+ 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
+ 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
+ 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
+ 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
+ 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
+ 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
+ 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
+ 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
+ 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
+ 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
+ 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c,
+ 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05,
+ 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64,
+ 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63,
+ 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75,
+ 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72,
+ 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
+ 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
+ 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10,
+ 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
+ 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a,
+ 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
+ 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f,
+ 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73,
+ 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73,
+ 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73,
+ 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76,
+ 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76,
+ 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72,
+ 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74,
+ 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
+ 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x2a, 0x3f,
+ 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b, 0x0a,
+ 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x52,
+ 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44,
+ 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x32,
+ 0xd3, 0x11, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01, 0x0a,
+ 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
+ 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x04, 0x72, 0x65,
+ 0x70, 0x6f, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65,
+ 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x1f, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
+ 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e,
+ 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73,
+ 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01, 0x0a,
+ 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
+ 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
+ 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
+ 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x25, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
+ 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e,
+ 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a,
+ 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61,
+ 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x4c,
+ 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12,
+ 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61,
+ 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10, 0x01,
+ 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74,
+ 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74,
+ 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c, 0x12,
+ 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66,
+ 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66,
+ 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f,
+ 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01, 0x0a,
+ 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
+ 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
+ 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c,
+ 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
+ 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
+ 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_registry_platform_proto_rawDescOnce sync.Once
+ file_registry_platform_proto_rawDescData = file_registry_platform_proto_rawDesc
+)
+
+func file_registry_platform_proto_rawDescGZIP() []byte {
+ file_registry_platform_proto_rawDescOnce.Do(func() {
+ file_registry_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_registry_platform_proto_rawDescData)
+ })
+ return file_registry_platform_proto_rawDescData
+}
+
+var file_registry_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
+var file_registry_platform_proto_goTypes = []interface{}{
+ (CatalogTier)(0), // 0: chainguard.platform.registry.CatalogTier
+ (*Repo)(nil), // 1: chainguard.platform.registry.Repo
+ (*SyncConfig)(nil), // 2: chainguard.platform.registry.SyncConfig
+ (*CreateRepoRequest)(nil), // 3: chainguard.platform.registry.CreateRepoRequest
+ (*DeleteRepoRequest)(nil), // 4: chainguard.platform.registry.DeleteRepoRequest
+ (*RepoList)(nil), // 5: chainguard.platform.registry.RepoList
+ (*RepoFilter)(nil), // 6: chainguard.platform.registry.RepoFilter
+ (*CreateTagRequest)(nil), // 7: chainguard.platform.registry.CreateTagRequest
+ (*DeleteTagRequest)(nil), // 8: chainguard.platform.registry.DeleteTagRequest
+ (*Tag)(nil), // 9: chainguard.platform.registry.Tag
+ (*TagFilter)(nil), // 10: chainguard.platform.registry.TagFilter
+ (*TagList)(nil), // 11: chainguard.platform.registry.TagList
+ (*TagHistoryFilter)(nil), // 12: chainguard.platform.registry.TagHistoryFilter
+ (*TagHistoryList)(nil), // 13: chainguard.platform.registry.TagHistoryList
+ (*TagHistory)(nil), // 14: chainguard.platform.registry.TagHistory
+ (*DiffImageResponse)(nil), // 15: chainguard.platform.registry.DiffImageResponse
+ (*ImageConfigDiff)(nil), // 16: chainguard.platform.registry.ImageConfigDiff
+ (*ChangedImageConfig)(nil), // 17: chainguard.platform.registry.ChangedImageConfig
+ (*PackagesDiff)(nil), // 18: chainguard.platform.registry.PackagesDiff
+ (*VersionReference)(nil), // 19: chainguard.platform.registry.VersionReference
+ (*PackageReference)(nil), // 20: chainguard.platform.registry.PackageReference
+ (*VulnerabilitiesDiff)(nil), // 21: chainguard.platform.registry.VulnerabilitiesDiff
+ (*ScannerMetadata)(nil), // 22: chainguard.platform.registry.ScannerMetadata
+ (*VulnerabilityReference)(nil), // 23: chainguard.platform.registry.VulnerabilityReference
+ (*DiffImageRequest)(nil), // 24: chainguard.platform.registry.DiffImageRequest
+ (*SbomRequest)(nil), // 25: chainguard.platform.registry.SbomRequest
+ (*VulnReportRequest)(nil), // 26: chainguard.platform.registry.VulnReportRequest
+ (*ChangedImageConfig_ChangedUser)(nil), // 27: chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ (*ChangedImageConfig_ChangedWorkingDir)(nil), // 28: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ (*ChangedImageConfig_EntrypointDiff)(nil), // 29: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ (*ChangedImageConfig_EnvDiff)(nil), // 30: chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ (*ChangedImageConfig_CmdDiff)(nil), // 31: chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ (*ChangedImageConfig_ChangedStopSignal)(nil), // 32: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ (*ChangedImageConfig_Volume)(nil), // 33: chainguard.platform.registry.ChangedImageConfig.Volume
+ (*ChangedImageConfig_VolumeDiff)(nil), // 34: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ nil, // 35: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ nil, // 36: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ (*PackagesDiff_ChangedPackageReference)(nil), // 37: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ (*v1.UIDPFilter)(nil), // 38: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp
+ (*v11.Scanner)(nil), // 40: chainguard.platform.tenant.Scanner
+ (*emptypb.Empty)(nil), // 41: google.protobuf.Empty
+ (*v11.Sbom2)(nil), // 42: chainguard.platform.tenant.Sbom2
+ (*v11.VulnReport)(nil), // 43: chainguard.platform.tenant.VulnReport
+}
+var file_registry_platform_proto_depIdxs = []int32{
+ 0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
+ 2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
+ 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 38, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 39, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 38, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 39, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 39, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 39, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 39, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 18, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 21, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 27, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 28, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 29, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 30, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 31, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 32, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 34, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 20, // 25: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 20, // 26: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 37, // 27: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 23, // 28: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 29: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 22, // 30: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 40, // 31: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 39, // 32: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 35, // 33: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 36, // 34: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 33, // 35: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 33, // 36: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 19, // 37: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 19, // 38: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 39: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 40: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 41: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 42: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 43: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 44: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 45: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 46: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 47: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 24, // 48: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 25, // 49: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 26, // 50: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 1, // 51: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 53: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 41, // 54: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 55: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 56: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 41, // 57: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 58: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 59: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 60: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 42, // 61: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 43, // 62: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 51, // [51:63] is the sub-list for method output_type
+ 39, // [39:51] is the sub-list for method input_type
+ 39, // [39:39] is the sub-list for extension type_name
+ 39, // [39:39] is the sub-list for extension extendee
+ 0, // [0:39] is the sub-list for field type_name
+}
+
+func init() { file_registry_platform_proto_init() }
+func file_registry_platform_proto_init() {
+ if File_registry_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_registry_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Repo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SyncConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateRepoRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRepoRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RepoList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RepoFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateTagRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteTagRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Tag); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TagFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TagList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TagHistoryFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TagHistoryList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*TagHistory); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DiffImageResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImageConfigDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PackagesDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VersionReference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PackageReference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilitiesDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ScannerMetadata); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityReference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DiffImageRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SbomRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnReportRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_ChangedUser); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_EnvDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_CmdDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_Volume); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_VolumeDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PackagesDiff_ChangedPackageReference); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_registry_platform_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 37,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_registry_platform_proto_goTypes,
+ DependencyIndexes: file_registry_platform_proto_depIdxs,
+ EnumInfos: file_registry_platform_proto_enumTypes,
+ MessageInfos: file_registry_platform_proto_msgTypes,
+ }.Build()
+ File_registry_platform_proto = out.File
+ file_registry_platform_proto_rawDesc = nil
+ file_registry_platform_proto_goTypes = nil
+ file_registry_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/registry/v1/registry.platform.pb.gw.go b/proto/platform/registry/v1/registry.platform.pb.gw.go
new file mode 100644
index 00000000..aa5a11c4
--- /dev/null
+++ b/proto/platform/registry/v1/registry.platform.pb.gw.go
@@ -0,0 +1,1406 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: registry.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Registry_CreateRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRepoRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Repo); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.CreateRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_CreateRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateRepoRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Repo); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.CreateRepo(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_UpdateRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Repo
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.UpdateRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_UpdateRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Repo
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.UpdateRepo(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Registry_ListRepos_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Registry_ListRepos_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RepoFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListRepos_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListRepos(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_ListRepos_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RepoFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListRepos_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListRepos(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_DeleteRepo_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRepoRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.DeleteRepo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_DeleteRepo_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteRepoRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.DeleteRepo(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_CreateTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateTagRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Tag); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ msg, err := client.CreateTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_CreateTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateTagRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Tag); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ msg, err := server.CreateTag(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_UpdateTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Tag
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.UpdateTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_UpdateTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Tag
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.UpdateTag(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_DeleteTag_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteTagRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.DeleteTag(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_DeleteTag_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteTagRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.DeleteTag(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Registry_ListTags_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Registry_ListTags_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TagFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTags_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListTags(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_ListTags_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TagFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTags_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListTags(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Registry_ListTagHistory_0 = &utilities.DoubleArray{Encoding: map[string]int{"parent_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
+)
+
+func request_Registry_ListTagHistory_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TagHistoryFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTagHistory_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListTagHistory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_ListTagHistory_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq TagHistoryFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListTagHistory_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListTagHistory(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Registry_DiffImage_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
+)
+
+func request_Registry_DiffImage_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DiffImageRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_DiffImage_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.DiffImage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_DiffImage_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DiffImageRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_DiffImage_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.DiffImage(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_GetSbom_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SbomRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ msg, err := client.GetSbom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_GetSbom_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq SbomRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ msg, err := server.GetSbom(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Registry_GetVulnReport_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnReportRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ msg, err := client.GetVulnReport(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_GetVulnReport_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnReportRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ msg, err := server.GetVulnReport(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterRegistryHandlerServer registers the http handlers for service Registry to "mux".
+// UnaryRPC :call RegistryServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRegistryHandlerFromEndpoint instead.
+func RegisterRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RegistryServer) error {
+
+ mux.Handle("POST", pattern_Registry_CreateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_CreateRepo_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Registry_UpdateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_UpdateRepo_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_UpdateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListRepos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListRepos", runtime.WithHTTPPathPattern("/registry/v1/repos"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_ListRepos_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Registry_DeleteRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_DeleteRepo_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Registry_CreateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{repo_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_CreateTag_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_CreateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Registry_UpdateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_UpdateTag_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_UpdateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Registry_DeleteTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_DeleteTag_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DeleteTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTags", runtime.WithHTTPPathPattern("/registry/v1/tags"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_ListTags_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListTags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListTagHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTagHistory", runtime.WithHTTPPathPattern("/registry/v1/tags/{parent_id=**}/history"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_ListTagHistory_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListTagHistory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_DiffImage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DiffImage", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/diff"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_DiffImage_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DiffImage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_GetSbom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetSbom", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_GetSbom_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetSbom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetVulnReport", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_GetVulnReport_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetVulnReport_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterRegistryHandlerFromEndpoint is same as RegisterRegistryHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterRegistryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterRegistryHandler(ctx, mux, conn)
+}
+
+// RegisterRegistryHandler registers the http handlers for service Registry to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterRegistryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterRegistryHandlerClient(ctx, mux, NewRegistryClient(conn))
+}
+
+// RegisterRegistryHandlerClient registers the http handlers for service Registry
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RegistryClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RegistryClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "RegistryClient" to call the correct interceptors.
+func RegisterRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RegistryClient) error {
+
+ mux.Handle("POST", pattern_Registry_CreateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_CreateRepo_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Registry_UpdateRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_UpdateRepo_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_UpdateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListRepos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListRepos", runtime.WithHTTPPathPattern("/registry/v1/repos"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_ListRepos_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Registry_DeleteRepo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteRepo", runtime.WithHTTPPathPattern("/registry/v1/repos/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_DeleteRepo_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Registry_CreateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/CreateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{repo_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_CreateTag_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_CreateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Registry_UpdateTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/UpdateTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_UpdateTag_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_UpdateTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Registry_DeleteTag_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DeleteTag", runtime.WithHTTPPathPattern("/registry/v1/tags/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_DeleteTag_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DeleteTag_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListTags_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTags", runtime.WithHTTPPathPattern("/registry/v1/tags"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_ListTags_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListTags_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_ListTagHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListTagHistory", runtime.WithHTTPPathPattern("/registry/v1/tags/{parent_id=**}/history"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_ListTagHistory_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListTagHistory_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_DiffImage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/DiffImage", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/diff"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_DiffImage_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_DiffImage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_GetSbom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetSbom", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_GetSbom_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetSbom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetVulnReport", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_GetVulnReport_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetVulnReport_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Registry_CreateRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "parent_id"}, ""))
+
+ pattern_Registry_UpdateRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "id"}, ""))
+
+ pattern_Registry_ListRepos_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"registry", "v1", "repos"}, ""))
+
+ pattern_Registry_DeleteRepo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "repos", "id"}, ""))
+
+ pattern_Registry_CreateTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "repo_id"}, ""))
+
+ pattern_Registry_UpdateTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "id"}, ""))
+
+ pattern_Registry_DeleteTag_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"registry", "v1", "tags", "id"}, ""))
+
+ pattern_Registry_ListTags_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"registry", "v1", "tags"}, ""))
+
+ pattern_Registry_ListTagHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "tags", "parent_id", "history"}, ""))
+
+ pattern_Registry_DiffImage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "repos", "repo_id", "diff"}, ""))
+
+ pattern_Registry_GetSbom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "sbom"}, ""))
+
+ pattern_Registry_GetVulnReport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "vulnreport"}, ""))
+)
+
+var (
+ forward_Registry_CreateRepo_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_UpdateRepo_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_ListRepos_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_DeleteRepo_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_CreateTag_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_UpdateTag_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_DeleteTag_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_ListTags_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_ListTagHistory_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_DiffImage_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_GetSbom_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_GetVulnReport_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
new file mode 100644
index 00000000..a62fc737
--- /dev/null
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -0,0 +1,457 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/registry/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.registry.v1";
+option java_outer_classname = "PlatformRegistryProto";
+
+package chainguard.platform.registry;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+import "vuln.platform.proto";
+import "sbom.platform.proto";
+
+service Registry {
+ rpc CreateRepo(CreateRepoRequest) returns (Repo) {
+ option (google.api.http) = {
+ post: "/registry/v1/repos/{parent_id=**}"
+ body: "repo"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.repo.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc UpdateRepo(Repo) returns (Repo) {
+ option (google.api.http) = {
+ put: "/registry/v1/repos/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.repo.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc ListRepos(RepoFilter) returns (RepoList) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc DeleteRepo(DeleteRepoRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/registry/v1/repos/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.repo.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc CreateTag(CreateTagRequest) returns (Tag) {
+ option (google.api.http) = {
+ post: "/registry/v1/tags/{repo_id=**}"
+ body: "tag"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TAG_CREATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.tag.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc UpdateTag(Tag) returns (Tag) {
+ option (google.api.http) = {
+ put: "/registry/v1/tags/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TAG_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.tag.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/registry/v1/tags/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TAG_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.platform.registry.tag.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc ListTags(TagFilter) returns (TagList) {
+ option (google.api.http) = {
+ get: "/registry/v1/tags"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TAG_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc ListTagHistory(TagHistoryFilter) returns (TagHistoryList) {
+ option (google.api.http) = {
+ get: "/registry/v1/tags/{parent_id=**}/history"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TAG_LIST]
+ }
+ };
+ }
+
+ rpc DiffImage(DiffImageRequest) returns (DiffImageResponse) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos/{repo_id=**}/diff"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_LIST, CAP_TENANT_VULN_REPORTS_LIST, CAP_TENANT_SBOMS_LIST]
+ }
+ };
+ }
+
+ rpc GetSbom(SbomRequest) returns (chainguard.platform.tenant.Sbom2) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/sbom"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_LIST, CAP_TENANT_SBOMS_LIST]
+ }
+ };
+ }
+
+ rpc GetVulnReport(VulnReportRequest) returns (chainguard.platform.tenant.VulnReport) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_LIST, CAP_TENANT_VULN_REPORTS_LIST]
+ }
+ };
+ }
+}
+
+message Repo {
+ // id is the identifier of this specific repository.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // name is the human-readable name of the repository.
+ string name = 2;
+
+ // catalog_tier is the catalog tier this repository belongs to.
+ CatalogTier catalog_tier = 3;
+
+ // bundles is a list of tags/labels that allow us to group repositories to each other for sales purposes.
+ repeated string bundles = 4;
+
+ // readme is raw Markdown file contents describing the repo.
+ string readme = 5;
+
+ // (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
+ // NOTE: This property can only be set by Chainguard.
+ SyncConfig sync_config = 6;
+}
+
+enum CatalogTier {
+ UNKNOWN = 0;
+ FREE = 1;
+ STANDARD = 2;
+ PREMIUM = 3;
+}
+
+message SyncConfig {
+ // Repo ID to sync from.
+ string source = 1;
+
+ // Controls whether exported tags will be uniquely labeled.
+ bool unique_tags = 2;
+}
+
+message CreateRepoRequest {
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+ Repo repo = 2;
+}
+
+message DeleteRepoRequest {
+ // ID, UID of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message RepoList {
+ repeated Repo items = 1;
+}
+
+message RepoFilter {
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // name is the exact name of the record.
+ string name = 2;
+
+ // id is the identifier of this specific repository.
+ string id = 3;
+}
+
+message CreateTagRequest {
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+ Tag tag = 2;
+}
+
+message DeleteTagRequest {
+ // ID, UID of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message Tag {
+ // id, identifier of this Tag, a UIDP under a Repo.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // name, the unique name of the Tag.
+ string name = 2;
+
+ // digest, the digest of the manifest with this tag.
+ string digest = 3;
+
+ // last time this tag was updated.
+ google.protobuf.Timestamp last_updated = 4;
+
+ // deprecated, true if the tag is deprecated.
+ bool deprecated = 5;
+
+ // bundles is a list of tags/labels for sales purposes.
+ repeated string bundles = 6;
+}
+
+message TagFilter {
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // The unique name of the Tag to list.
+ string name = 2;
+
+ // The timestamp after which returned records were updated.
+ google.protobuf.Timestamp updated_since = 3;
+
+ // Exclude tags of the form "sha256-*".
+ bool exclude_referrers = 6;
+
+ // Exclude tags of the form "*-20yymmdd".
+ bool exclude_dates = 7;
+
+ // Exclude tags of the form "*-r[0-9]+".
+ bool exclude_epochs = 8;
+
+ string id = 9;
+}
+
+message TagList {
+ repeated Tag items = 1;
+}
+
+message TagHistoryFilter {
+ // tag UIDP to list history for.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ google.protobuf.Timestamp start = 2;
+ google.protobuf.Timestamp end = 3;
+}
+
+message TagHistoryList {
+ repeated TagHistory items = 1;
+}
+
+message TagHistory {
+ google.protobuf.Timestamp update_timestamp = 1;
+ string digest = 2;
+}
+
+message DiffImageResponse {
+ PackagesDiff packages = 1;
+ VulnerabilitiesDiff vulnerabilities = 2;
+
+ // This field referred to the FilesDiff mesage and is no longer in use.
+ reserved 3;
+
+ ImageConfigDiff config = 4;
+
+ // warnings is a list of warning messages to return to the requesting client.
+ // Warning messages describe a problem the client making the DiffImageRequest should correct or be aware of.
+ // Warnings over 256 characters and large numbers of warnings may be truncated.
+ repeated string warnings = 5;
+}
+
+message ImageConfigDiff {
+ ChangedImageConfig changed = 1;
+}
+
+message ChangedImageConfig {
+ message ChangedUser {
+ string current = 1;
+ string previous = 2;
+ }
+ ChangedUser changedUser = 1;
+
+ message ChangedWorkingDir {
+ string current = 1;
+ string previous = 2;
+ }
+
+ ChangedWorkingDir changedWorkingDir = 2;
+
+ message EntrypointDiff {
+ repeated string added = 1;
+ repeated string removed = 2;
+ }
+
+ EntrypointDiff entrypoints = 3;
+
+ message EnvDiff {
+ repeated string added = 1;
+ repeated string removed = 2;
+ }
+
+ EnvDiff envs = 4;
+
+ message CmdDiff {
+ repeated string added = 1;
+ repeated string removed = 2;
+ }
+
+ CmdDiff cmds = 5;
+
+ message ChangedStopSignal {
+ string current = 1;
+ string previous = 2;
+ }
+ ChangedStopSignal changedStopSignal = 6;
+
+ message Volume {}
+ message VolumeDiff {
+ map added = 1;
+ map removed = 2;
+ }
+ VolumeDiff volumes = 7;
+}
+
+message PackagesDiff {
+ repeated PackageReference added = 1;
+ repeated PackageReference removed = 2;
+
+ message ChangedPackageReference {
+ string name = 1;
+ VersionReference current = 2;
+ VersionReference previous = 3;
+ }
+
+ repeated ChangedPackageReference changed = 3;
+}
+
+message VersionReference {
+ string version = 1;
+ string reference = 2;
+}
+
+// PackageReference is a reference to a package, containing minimal information to identify it.
+message PackageReference {
+ string name = 1;
+ string version = 2;
+ string reference = 3;
+}
+
+message VulnerabilitiesDiff {
+ repeated VulnerabilityReference added = 1;
+ repeated VulnerabilityReference removed = 2;
+ repeated ScannerMetadata metadata = 3;
+}
+
+message ScannerMetadata {
+ string digest = 1;
+ chainguard.platform.tenant.Scanner scanner = 2;
+ google.protobuf.Timestamp vulnerability_db_last_build_time = 3;
+ string vulnerability_db_schema_version = 4;
+}
+
+// VulnerabilityReference is a reference to a vulnerability, containing minimal information to identify it.
+message VulnerabilityReference {
+ string id = 1;
+ string reference = 2;
+ string severity = 3;
+}
+
+// DiffImageRequests are used to request a diff between two images.
+message DiffImageRequest {
+ // The UIDP of the image repo to diff against.
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ string from_digest = 2;
+ string to_digest = 3;
+}
+
+message SbomRequest {
+ // The UIDP of the image repo to get an SBOM for.
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // The digest of the image to get an SBOM for.
+ string digest = 2;
+}
+
+message VulnReportRequest {
+ // The UIDP of the image repo to get a VulnReport for.
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // The digest of the image to get a VulnReport for.
+ string digest = 2;
+}
diff --git a/proto/platform/registry/v1/registry.platform_grpc.pb.go b/proto/platform/registry/v1/registry.platform_grpc.pb.go
new file mode 100644
index 00000000..a0faf126
--- /dev/null
+++ b/proto/platform/registry/v1/registry.platform_grpc.pb.go
@@ -0,0 +1,518 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: registry.platform.proto
+
+package v1
+
+import (
+ v1 "chainguard.dev/sdk/proto/platform/tenant/v1"
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Registry_CreateRepo_FullMethodName = "/chainguard.platform.registry.Registry/CreateRepo"
+ Registry_UpdateRepo_FullMethodName = "/chainguard.platform.registry.Registry/UpdateRepo"
+ Registry_ListRepos_FullMethodName = "/chainguard.platform.registry.Registry/ListRepos"
+ Registry_DeleteRepo_FullMethodName = "/chainguard.platform.registry.Registry/DeleteRepo"
+ Registry_CreateTag_FullMethodName = "/chainguard.platform.registry.Registry/CreateTag"
+ Registry_UpdateTag_FullMethodName = "/chainguard.platform.registry.Registry/UpdateTag"
+ Registry_DeleteTag_FullMethodName = "/chainguard.platform.registry.Registry/DeleteTag"
+ Registry_ListTags_FullMethodName = "/chainguard.platform.registry.Registry/ListTags"
+ Registry_ListTagHistory_FullMethodName = "/chainguard.platform.registry.Registry/ListTagHistory"
+ Registry_DiffImage_FullMethodName = "/chainguard.platform.registry.Registry/DiffImage"
+ Registry_GetSbom_FullMethodName = "/chainguard.platform.registry.Registry/GetSbom"
+ Registry_GetVulnReport_FullMethodName = "/chainguard.platform.registry.Registry/GetVulnReport"
+)
+
+// RegistryClient is the client API for Registry service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RegistryClient interface {
+ CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error)
+ UpdateRepo(ctx context.Context, in *Repo, opts ...grpc.CallOption) (*Repo, error)
+ ListRepos(ctx context.Context, in *RepoFilter, opts ...grpc.CallOption) (*RepoList, error)
+ DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ CreateTag(ctx context.Context, in *CreateTagRequest, opts ...grpc.CallOption) (*Tag, error)
+ UpdateTag(ctx context.Context, in *Tag, opts ...grpc.CallOption) (*Tag, error)
+ DeleteTag(ctx context.Context, in *DeleteTagRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ListTags(ctx context.Context, in *TagFilter, opts ...grpc.CallOption) (*TagList, error)
+ ListTagHistory(ctx context.Context, in *TagHistoryFilter, opts ...grpc.CallOption) (*TagHistoryList, error)
+ DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error)
+ GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error)
+ GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error)
+}
+
+type registryClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRegistryClient(cc grpc.ClientConnInterface) RegistryClient {
+ return ®istryClient{cc}
+}
+
+func (c *registryClient) CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error) {
+ out := new(Repo)
+ err := c.cc.Invoke(ctx, Registry_CreateRepo_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) UpdateRepo(ctx context.Context, in *Repo, opts ...grpc.CallOption) (*Repo, error) {
+ out := new(Repo)
+ err := c.cc.Invoke(ctx, Registry_UpdateRepo_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) ListRepos(ctx context.Context, in *RepoFilter, opts ...grpc.CallOption) (*RepoList, error) {
+ out := new(RepoList)
+ err := c.cc.Invoke(ctx, Registry_ListRepos_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Registry_DeleteRepo_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) CreateTag(ctx context.Context, in *CreateTagRequest, opts ...grpc.CallOption) (*Tag, error) {
+ out := new(Tag)
+ err := c.cc.Invoke(ctx, Registry_CreateTag_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) UpdateTag(ctx context.Context, in *Tag, opts ...grpc.CallOption) (*Tag, error) {
+ out := new(Tag)
+ err := c.cc.Invoke(ctx, Registry_UpdateTag_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) DeleteTag(ctx context.Context, in *DeleteTagRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Registry_DeleteTag_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) ListTags(ctx context.Context, in *TagFilter, opts ...grpc.CallOption) (*TagList, error) {
+ out := new(TagList)
+ err := c.cc.Invoke(ctx, Registry_ListTags_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) ListTagHistory(ctx context.Context, in *TagHistoryFilter, opts ...grpc.CallOption) (*TagHistoryList, error) {
+ out := new(TagHistoryList)
+ err := c.cc.Invoke(ctx, Registry_ListTagHistory_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error) {
+ out := new(DiffImageResponse)
+ err := c.cc.Invoke(ctx, Registry_DiffImage_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error) {
+ out := new(v1.Sbom2)
+ err := c.cc.Invoke(ctx, Registry_GetSbom_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *registryClient) GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error) {
+ out := new(v1.VulnReport)
+ err := c.cc.Invoke(ctx, Registry_GetVulnReport_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RegistryServer is the server API for Registry service.
+// All implementations must embed UnimplementedRegistryServer
+// for forward compatibility
+type RegistryServer interface {
+ CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error)
+ UpdateRepo(context.Context, *Repo) (*Repo, error)
+ ListRepos(context.Context, *RepoFilter) (*RepoList, error)
+ DeleteRepo(context.Context, *DeleteRepoRequest) (*emptypb.Empty, error)
+ CreateTag(context.Context, *CreateTagRequest) (*Tag, error)
+ UpdateTag(context.Context, *Tag) (*Tag, error)
+ DeleteTag(context.Context, *DeleteTagRequest) (*emptypb.Empty, error)
+ ListTags(context.Context, *TagFilter) (*TagList, error)
+ ListTagHistory(context.Context, *TagHistoryFilter) (*TagHistoryList, error)
+ DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error)
+ GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error)
+ GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error)
+ mustEmbedUnimplementedRegistryServer()
+}
+
+// UnimplementedRegistryServer must be embedded to have forward compatible implementations.
+type UnimplementedRegistryServer struct {
+}
+
+func (UnimplementedRegistryServer) CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateRepo not implemented")
+}
+func (UnimplementedRegistryServer) UpdateRepo(context.Context, *Repo) (*Repo, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method UpdateRepo not implemented")
+}
+func (UnimplementedRegistryServer) ListRepos(context.Context, *RepoFilter) (*RepoList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListRepos not implemented")
+}
+func (UnimplementedRegistryServer) DeleteRepo(context.Context, *DeleteRepoRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteRepo not implemented")
+}
+func (UnimplementedRegistryServer) CreateTag(context.Context, *CreateTagRequest) (*Tag, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateTag not implemented")
+}
+func (UnimplementedRegistryServer) UpdateTag(context.Context, *Tag) (*Tag, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method UpdateTag not implemented")
+}
+func (UnimplementedRegistryServer) DeleteTag(context.Context, *DeleteTagRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteTag not implemented")
+}
+func (UnimplementedRegistryServer) ListTags(context.Context, *TagFilter) (*TagList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListTags not implemented")
+}
+func (UnimplementedRegistryServer) ListTagHistory(context.Context, *TagHistoryFilter) (*TagHistoryList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListTagHistory not implemented")
+}
+func (UnimplementedRegistryServer) DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DiffImage not implemented")
+}
+func (UnimplementedRegistryServer) GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSbom not implemented")
+}
+func (UnimplementedRegistryServer) GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetVulnReport not implemented")
+}
+func (UnimplementedRegistryServer) mustEmbedUnimplementedRegistryServer() {}
+
+// UnsafeRegistryServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RegistryServer will
+// result in compilation errors.
+type UnsafeRegistryServer interface {
+ mustEmbedUnimplementedRegistryServer()
+}
+
+func RegisterRegistryServer(s grpc.ServiceRegistrar, srv RegistryServer) {
+ s.RegisterService(&Registry_ServiceDesc, srv)
+}
+
+func _Registry_CreateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateRepoRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).CreateRepo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_CreateRepo_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).CreateRepo(ctx, req.(*CreateRepoRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_UpdateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Repo)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).UpdateRepo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_UpdateRepo_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).UpdateRepo(ctx, req.(*Repo))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_ListRepos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RepoFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).ListRepos(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_ListRepos_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).ListRepos(ctx, req.(*RepoFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_DeleteRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteRepoRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).DeleteRepo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_DeleteRepo_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).DeleteRepo(ctx, req.(*DeleteRepoRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_CreateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateTagRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).CreateTag(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_CreateTag_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).CreateTag(ctx, req.(*CreateTagRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_UpdateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Tag)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).UpdateTag(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_UpdateTag_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).UpdateTag(ctx, req.(*Tag))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_DeleteTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteTagRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).DeleteTag(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_DeleteTag_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).DeleteTag(ctx, req.(*DeleteTagRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_ListTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(TagFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).ListTags(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_ListTags_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).ListTags(ctx, req.(*TagFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_ListTagHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(TagHistoryFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).ListTagHistory(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_ListTagHistory_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).ListTagHistory(ctx, req.(*TagHistoryFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_DiffImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DiffImageRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).DiffImage(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_DiffImage_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).DiffImage(ctx, req.(*DiffImageRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_GetSbom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SbomRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).GetSbom(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_GetSbom_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).GetSbom(ctx, req.(*SbomRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Registry_GetVulnReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(VulnReportRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).GetVulnReport(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_GetVulnReport_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).GetVulnReport(ctx, req.(*VulnReportRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Registry_ServiceDesc is the grpc.ServiceDesc for Registry service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Registry_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.registry.Registry",
+ HandlerType: (*RegistryServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "CreateRepo",
+ Handler: _Registry_CreateRepo_Handler,
+ },
+ {
+ MethodName: "UpdateRepo",
+ Handler: _Registry_UpdateRepo_Handler,
+ },
+ {
+ MethodName: "ListRepos",
+ Handler: _Registry_ListRepos_Handler,
+ },
+ {
+ MethodName: "DeleteRepo",
+ Handler: _Registry_DeleteRepo_Handler,
+ },
+ {
+ MethodName: "CreateTag",
+ Handler: _Registry_CreateTag_Handler,
+ },
+ {
+ MethodName: "UpdateTag",
+ Handler: _Registry_UpdateTag_Handler,
+ },
+ {
+ MethodName: "DeleteTag",
+ Handler: _Registry_DeleteTag_Handler,
+ },
+ {
+ MethodName: "ListTags",
+ Handler: _Registry_ListTags_Handler,
+ },
+ {
+ MethodName: "ListTagHistory",
+ Handler: _Registry_ListTagHistory_Handler,
+ },
+ {
+ MethodName: "DiffImage",
+ Handler: _Registry_DiffImage_Handler,
+ },
+ {
+ MethodName: "GetSbom",
+ Handler: _Registry_GetSbom_Handler,
+ },
+ {
+ MethodName: "GetVulnReport",
+ Handler: _Registry_GetVulnReport_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "registry.platform.proto",
+}
diff --git a/proto/platform/registry/v1/test/registry.go b/proto/platform/registry/v1/test/registry.go
new file mode 100644
index 00000000..b1e21513
--- /dev/null
+++ b/proto/platform/registry/v1/test/registry.go
@@ -0,0 +1,231 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ registry "chainguard.dev/sdk/proto/platform/registry/v1"
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+)
+
+var _ registry.Clients = (*MockRegistryClients)(nil)
+
+type MockRegistryClients struct {
+ OnClose error
+
+ RegistryClient MockRegistryClient
+}
+
+func (m MockRegistryClients) Registry() registry.RegistryClient {
+ return &m.RegistryClient
+}
+
+func (m MockRegistryClients) Close() error {
+ return m.OnClose
+}
+
+var _ registry.RegistryClient = (*MockRegistryClient)(nil)
+
+type MockRegistryClient struct {
+ registry.RegistryClient
+
+ OnCreateRepos []ReposOnCreate
+ OnDeleteRepos []ReposOnDelete
+ OnListRepos []ReposOnList
+ OnCreateTags []TagsOnCreate
+ OnDeleteTags []TagsOnDelete
+ OnUpdateTag []TagOnUpdate
+ OnListTags []TagsOnList
+ OnUpdateRepo []RepoOnUpdate
+ OnListTagHistory []TagHistoryOnList
+ OnGetSbom []SbomOnGet
+ OnGetVulnReport []VulnReportOnGet
+ OnDiffImage []DiffImage
+}
+
+type DiffImage struct {
+ Given *registry.DiffImageRequest
+ Diff *registry.DiffImageResponse
+ Error error
+}
+
+type ReposOnCreate struct {
+ Given *registry.CreateRepoRequest
+ Created *registry.Repo
+ Error error
+}
+
+type ReposOnDelete struct {
+ Given *registry.DeleteRepoRequest
+ Error error
+}
+
+type ReposOnList struct {
+ Given *registry.RepoFilter
+ List *registry.RepoList
+ Error error
+}
+
+type TagsOnCreate struct {
+ Given *registry.CreateTagRequest
+ Created *registry.Tag
+ Error error
+}
+
+type TagsOnDelete struct {
+ Given *registry.DeleteTagRequest
+ Error error
+}
+
+type TagOnUpdate struct {
+ Given *registry.Tag
+ Updated *registry.Tag
+ Error error
+}
+
+type TagsOnList struct {
+ Given *registry.TagFilter
+ List *registry.TagList
+ Error error
+}
+
+type RepoOnUpdate struct {
+ Given *registry.Repo
+ Updated *registry.Repo
+ Error error
+}
+
+type TagHistoryOnList struct {
+ Given *registry.TagHistoryFilter
+ List *registry.TagHistoryList
+ Error error
+}
+
+type SbomOnGet struct {
+ Given *registry.SbomRequest
+ Get *tenant.Sbom2
+ Error error
+}
+
+type VulnReportOnGet struct {
+ Given *registry.VulnReportRequest
+ Get *tenant.VulnReport
+ Error error
+}
+
+func (m MockRegistryClient) CreateRepo(_ context.Context, given *registry.CreateRepoRequest, _ ...grpc.CallOption) (*registry.Repo, error) {
+ for _, o := range m.OnCreateRepos {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) DeleteRepo(_ context.Context, given *registry.DeleteRepoRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDeleteRepos {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) ListRepos(_ context.Context, given *registry.RepoFilter, _ ...grpc.CallOption) (*registry.RepoList, error) { //nolint: revive
+ for _, o := range m.OnListRepos {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) CreateTag(_ context.Context, given *registry.CreateTagRequest, _ ...grpc.CallOption) (*registry.Tag, error) {
+ for _, o := range m.OnCreateTags {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) UpdateTag(_ context.Context, given *registry.Tag, _ ...grpc.CallOption) (*registry.Tag, error) {
+ for _, o := range m.OnUpdateTag {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) DeleteTag(_ context.Context, given *registry.DeleteTagRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDeleteTags {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) ListTags(_ context.Context, given *registry.TagFilter, _ ...grpc.CallOption) (*registry.TagList, error) { //nolint: revive
+ for _, o := range m.OnListTags {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) UpdateRepo(_ context.Context, given *registry.Repo, _ ...grpc.CallOption) (*registry.Repo, error) { //nolint: revive
+ for _, o := range m.OnUpdateRepo {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) ListTagHistory(_ context.Context, given *registry.TagHistoryFilter, _ ...grpc.CallOption) (*registry.TagHistoryList, error) { //nolint: revive
+ for _, o := range m.OnListTagHistory {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) GetSbom(_ context.Context, given *registry.SbomRequest, _ ...grpc.CallOption) (*tenant.Sbom2, error) { //nolint: revive
+ for _, o := range m.OnGetSbom {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Get, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) GetVulnReport(_ context.Context, given *registry.VulnReportRequest, _ ...grpc.CallOption) (*tenant.VulnReport, error) { //nolint: revive
+ for _, o := range m.OnGetVulnReport {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Get, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockRegistryClient) DiffImage(_ context.Context, given *registry.DiffImageRequest, _ ...grpc.CallOption) (*registry.DiffImageResponse, error) {
+ for _, o := range m.OnDiffImage {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Diff, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.go b/proto/platform/tenant/v1/attestation.platform.pb.go
new file mode 100644
index 00000000..52bae515
--- /dev/null
+++ b/proto/platform/tenant/v1/attestation.platform.pb.go
@@ -0,0 +1,389 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: attestation.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+// Attestation represents a normalized Attestation that we have ingested into our datastore.
+// They are linked to Signatures via ID, as in they are 'children' of Signatures
+// There can be multiple of these that we keep.
+type Attestation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Attestation UIDP at which this Attestation resides in the hierarchy.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // raw_attestation is a free form type to stub in any attestations so we don't end up a
+ // adding new tables for all the new type of attestations, initial goal is to add image configs
+ // and anything which comes up after that
+ RawAttestation []byte `protobuf:"bytes,2,opt,name=raw_attestation,json=rawAttestation,proto3" json:"raw_attestation,omitempty"`
+ // format holds the Document format type
+ Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"`
+ // generated_at holds when the Attestation was generated.
+ GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"`
+ // Name of the Attestation.
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ // Short description of the Attestation
+ Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
+ // digest of the Attestation when ingested
+ Digest *string `protobuf:"bytes,7,opt,name=digest,proto3,oneof" json:"digest,omitempty"`
+}
+
+func (x *Attestation) Reset() {
+ *x = Attestation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_attestation_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Attestation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Attestation) ProtoMessage() {}
+
+func (x *Attestation) ProtoReflect() protoreflect.Message {
+ mi := &file_attestation_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Attestation.ProtoReflect.Descriptor instead.
+func (*Attestation) Descriptor() ([]byte, []int) {
+ return file_attestation_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Attestation) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Attestation) GetRawAttestation() []byte {
+ if x != nil {
+ return x.RawAttestation
+ }
+ return nil
+}
+
+func (x *Attestation) GetFormat() string {
+ if x != nil {
+ return x.Format
+ }
+ return ""
+}
+
+func (x *Attestation) GetGeneratedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.GeneratedAt
+ }
+ return nil
+}
+
+func (x *Attestation) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Attestation) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Attestation) GetDigest() string {
+ if x != nil && x.Digest != nil {
+ return *x.Digest
+ }
+ return ""
+}
+
+type AttestationList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Attestation `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *AttestationList) Reset() {
+ *x = AttestationList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_attestation_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AttestationList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AttestationList) ProtoMessage() {}
+
+func (x *AttestationList) ProtoReflect() protoreflect.Message {
+ mi := &file_attestation_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AttestationList.ProtoReflect.Descriptor instead.
+func (*AttestationList) Descriptor() ([]byte, []int) {
+ return file_attestation_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *AttestationList) GetItems() []*Attestation {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type AttestationFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *AttestationFilter) Reset() {
+ *x = AttestationFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_attestation_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AttestationFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AttestationFilter) ProtoMessage() {}
+
+func (x *AttestationFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_attestation_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AttestationFilter.ProtoReflect.Descriptor instead.
+func (*AttestationFilter) Descriptor() ([]byte, []int) {
+ return file_attestation_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *AttestationFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *AttestationFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+var File_attestation_platform_proto protoreflect.FileDescriptor
+
+var file_attestation_platform_proto_rawDesc = []byte{
+ 0x0a, 0x1a, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x41, 0x74,
+ 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x61, 0x77,
+ 0x5f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0c, 0x52, 0x0e, 0x72, 0x61, 0x77, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x67, 0x65,
+ 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x67, 0x65,
+ 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07,
+ 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x74, 0x74,
+ 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x82, 0x01, 0x0a, 0x0c, 0x41,
+ 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x04, 0x4c,
+ 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x1a, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x9e, 0x05, 0x10, 0x01, 0x42,
+ 0x76, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_attestation_platform_proto_rawDescOnce sync.Once
+ file_attestation_platform_proto_rawDescData = file_attestation_platform_proto_rawDesc
+)
+
+func file_attestation_platform_proto_rawDescGZIP() []byte {
+ file_attestation_platform_proto_rawDescOnce.Do(func() {
+ file_attestation_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_attestation_platform_proto_rawDescData)
+ })
+ return file_attestation_platform_proto_rawDescData
+}
+
+var file_attestation_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_attestation_platform_proto_goTypes = []interface{}{
+ (*Attestation)(nil), // 0: chainguard.platform.tenant.Attestation
+ (*AttestationList)(nil), // 1: chainguard.platform.tenant.AttestationList
+ (*AttestationFilter)(nil), // 2: chainguard.platform.tenant.AttestationFilter
+ (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
+}
+var file_attestation_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.tenant.Attestation.generated_at:type_name -> google.protobuf.Timestamp
+ 0, // 1: chainguard.platform.tenant.AttestationList.items:type_name -> chainguard.platform.tenant.Attestation
+ 4, // 2: chainguard.platform.tenant.AttestationFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 2, // 3: chainguard.platform.tenant.Attestations.List:input_type -> chainguard.platform.tenant.AttestationFilter
+ 1, // 4: chainguard.platform.tenant.Attestations.List:output_type -> chainguard.platform.tenant.AttestationList
+ 4, // [4:5] is the sub-list for method output_type
+ 3, // [3:4] 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_attestation_platform_proto_init() }
+func file_attestation_platform_proto_init() {
+ if File_attestation_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_attestation_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Attestation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_attestation_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttestationList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_attestation_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AttestationFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_attestation_platform_proto_msgTypes[0].OneofWrappers = []interface{}{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_attestation_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_attestation_platform_proto_goTypes,
+ DependencyIndexes: file_attestation_platform_proto_depIdxs,
+ MessageInfos: file_attestation_platform_proto_msgTypes,
+ }.Build()
+ File_attestation_platform_proto = out.File
+ file_attestation_platform_proto_rawDesc = nil
+ file_attestation_platform_proto_goTypes = nil
+ file_attestation_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.gw.go b/proto/platform/tenant/v1/attestation.platform.pb.gw.go
new file mode 100644
index 00000000..38db96d2
--- /dev/null
+++ b/proto/platform/tenant/v1/attestation.platform.pb.gw.go
@@ -0,0 +1,169 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: attestation.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Attestations_List_0(ctx context.Context, marshaler runtime.Marshaler, client AttestationsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AttestationFilter
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Attestations_List_0(ctx context.Context, marshaler runtime.Marshaler, server AttestationsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq AttestationFilter
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterAttestationsHandlerServer registers the http handlers for service Attestations to "mux".
+// UnaryRPC :call AttestationsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAttestationsHandlerFromEndpoint instead.
+func RegisterAttestationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AttestationsServer) error {
+
+ mux.Handle("POST", pattern_Attestations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Attestations/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Attestations/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Attestations_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Attestations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterAttestationsHandlerFromEndpoint is same as RegisterAttestationsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterAttestationsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterAttestationsHandler(ctx, mux, conn)
+}
+
+// RegisterAttestationsHandler registers the http handlers for service Attestations to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterAttestationsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterAttestationsHandlerClient(ctx, mux, NewAttestationsClient(conn))
+}
+
+// RegisterAttestationsHandlerClient registers the http handlers for service Attestations
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AttestationsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AttestationsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "AttestationsClient" to call the correct interceptors.
+func RegisterAttestationsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AttestationsClient) error {
+
+ mux.Handle("POST", pattern_Attestations_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Attestations/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Attestations/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Attestations_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Attestations_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Attestations_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Attestations", "List"}, ""))
+)
+
+var (
+ forward_Attestations_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/attestation.platform.proto b/proto/platform/tenant/v1/attestation.platform.proto
new file mode 100644
index 00000000..652a67f2
--- /dev/null
+++ b/proto/platform/tenant/v1/attestation.platform.proto
@@ -0,0 +1,63 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantAttestationProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Attestations {
+ rpc List(AttestationFilter) returns (AttestationList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_ATTESTATIONS_LIST]
+ unscoped: true
+ }
+ };
+ }
+ }
+
+// Attestation represents a normalized Attestation that we have ingested into our datastore.
+// They are linked to Signatures via ID, as in they are 'children' of Signatures
+// There can be multiple of these that we keep.
+message Attestation {
+ // id, The Attestation UIDP at which this Attestation resides in the hierarchy.
+ string id = 1;
+
+ // raw_attestation is a free form type to stub in any attestations so we don't end up a
+ // adding new tables for all the new type of attestations, initial goal is to add image configs
+ // and anything which comes up after that
+ bytes raw_attestation = 2;
+
+ // format holds the Document format type
+ string format = 3;
+
+ // generated_at holds when the Attestation was generated.
+ google.protobuf.Timestamp generated_at = 4;
+
+ // Name of the Attestation.
+ string name = 5;
+
+ // Short description of the Attestation
+ string description = 6;
+
+ // digest of the Attestation when ingested
+ optional string digest = 7;
+}
+
+message AttestationList {
+ repeated Attestation items = 1;
+}
+
+message AttestationFilter {
+ // id is the exact UID of the record.
+ string id = 1;
+
+ chainguard.platform.common.UIDPFilter uidp = 2;
+
+}
diff --git a/proto/platform/tenant/v1/attestation.platform_grpc.pb.go b/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
new file mode 100644
index 00000000..321d546e
--- /dev/null
+++ b/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: attestation.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Attestations_List_FullMethodName = "/chainguard.platform.tenant.Attestations/List"
+)
+
+// AttestationsClient is the client API for Attestations service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type AttestationsClient interface {
+ List(ctx context.Context, in *AttestationFilter, opts ...grpc.CallOption) (*AttestationList, error)
+}
+
+type attestationsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewAttestationsClient(cc grpc.ClientConnInterface) AttestationsClient {
+ return &attestationsClient{cc}
+}
+
+func (c *attestationsClient) List(ctx context.Context, in *AttestationFilter, opts ...grpc.CallOption) (*AttestationList, error) {
+ out := new(AttestationList)
+ err := c.cc.Invoke(ctx, Attestations_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// AttestationsServer is the server API for Attestations service.
+// All implementations must embed UnimplementedAttestationsServer
+// for forward compatibility
+type AttestationsServer interface {
+ List(context.Context, *AttestationFilter) (*AttestationList, error)
+ mustEmbedUnimplementedAttestationsServer()
+}
+
+// UnimplementedAttestationsServer must be embedded to have forward compatible implementations.
+type UnimplementedAttestationsServer struct {
+}
+
+func (UnimplementedAttestationsServer) List(context.Context, *AttestationFilter) (*AttestationList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedAttestationsServer) mustEmbedUnimplementedAttestationsServer() {}
+
+// UnsafeAttestationsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to AttestationsServer will
+// result in compilation errors.
+type UnsafeAttestationsServer interface {
+ mustEmbedUnimplementedAttestationsServer()
+}
+
+func RegisterAttestationsServer(s grpc.ServiceRegistrar, srv AttestationsServer) {
+ s.RegisterService(&Attestations_ServiceDesc, srv)
+}
+
+func _Attestations_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AttestationFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(AttestationsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Attestations_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(AttestationsServer).List(ctx, req.(*AttestationFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Attestations_ServiceDesc is the grpc.ServiceDesc for Attestations service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Attestations_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Attestations",
+ HandlerType: (*AttestationsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Attestations_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "attestation.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
new file mode 100644
index 00000000..3fc4389e
--- /dev/null
+++ b/proto/platform/tenant/v1/clients.go
@@ -0,0 +1,164 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "time"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ "github.com/chainguard-dev/clog"
+ "google.golang.org/grpc"
+
+ "chainguard.dev/sdk/auth"
+)
+
+type Clients interface {
+ Clusters() ClustersClient
+ Records() RecordsClient
+ RecordContexts() RecordContextsClient
+ Sboms() SbomsClient
+ Risks() RisksClient
+ Signatures() SignaturesClient
+ PolicyResults() PolicyResultsClient
+ VulnReports() VulnReportsClient
+
+ Nodes() NodesClient
+ Namespaces() NamespacesClient
+ Workloads() WorkloadsClient
+
+ Close() error
+}
+
+func NewClients(ctx context.Context, addr string, token string) (Clients, error) {
+ uri, err := url.Parse(addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse tenant service address, must be a url: %w", err)
+ }
+
+ target, opts := delegate.GRPCOptions(*uri)
+
+ // TODO: we may want to require transport security at some future point.
+ if cred := auth.NewFromToken(ctx, token, false); cred != nil {
+ opts = append(opts, grpc.WithPerRPCCredentials(cred))
+ } else {
+ clog.FromContext(ctx).Warn("No authentication provided, this may end badly.")
+ }
+
+ var cancel context.CancelFunc
+ if _, timeoutSet := ctx.Deadline(); !timeoutSet {
+ ctx, cancel = context.WithTimeout(ctx, 300*time.Second)
+ defer cancel()
+ }
+ conn, err := grpc.DialContext(ctx, target, opts...)
+ if err != nil {
+ return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ }
+
+ return &clients{
+ clusters: NewClustersClient(conn),
+ records: NewRecordsClient(conn),
+ recordContexts: NewRecordContextsClient(conn),
+ sboms: NewSbomsClient(conn),
+ vulnReports: NewVulnReportsClient(conn),
+ risks: NewRisksClient(conn),
+ signatures: NewSignaturesClient(conn),
+ nodes: NewNodesClient(conn),
+ namespaces: NewNamespacesClient(conn),
+ workloads: NewWorkloadsClient(conn),
+ policyResults: NewPolicyResultsClient(conn),
+
+ conn: conn,
+ }, nil
+}
+
+func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
+ return &clients{
+ clusters: NewClustersClient(conn),
+ records: NewRecordsClient(conn),
+ recordContexts: NewRecordContextsClient(conn),
+ sboms: NewSbomsClient(conn),
+ vulnReports: NewVulnReportsClient(conn),
+ risks: NewRisksClient(conn),
+ signatures: NewSignaturesClient(conn),
+ policyResults: NewPolicyResultsClient(conn),
+ nodes: NewNodesClient(conn),
+ namespaces: NewNamespacesClient(conn),
+ workloads: NewWorkloadsClient(conn),
+ // conn is not set, this client struct does not own closing it.
+ }
+}
+
+type clients struct {
+ clusters ClustersClient
+ records RecordsClient
+
+ recordContexts RecordContextsClient
+ sboms SbomsClient
+ risks RisksClient
+ signatures SignaturesClient
+ policyResults PolicyResultsClient
+ vulnReports VulnReportsClient
+
+ nodes NodesClient
+ namespaces NamespacesClient
+ workloads WorkloadsClient
+
+ conn *grpc.ClientConn
+}
+
+func (c *clients) Clusters() ClustersClient {
+ return c.clusters
+}
+
+func (c *clients) Records() RecordsClient {
+ return c.records
+}
+
+func (c *clients) RecordContexts() RecordContextsClient {
+ return c.recordContexts
+}
+
+func (c *clients) Sboms() SbomsClient {
+ return c.sboms
+}
+
+func (c *clients) Risks() RisksClient {
+ return c.risks
+}
+
+func (c *clients) Signatures() SignaturesClient {
+ return c.signatures
+}
+
+func (c *clients) PolicyResults() PolicyResultsClient {
+ return c.policyResults
+}
+
+func (c *clients) Nodes() NodesClient {
+ return c.nodes
+}
+
+func (c *clients) Namespaces() NamespacesClient {
+ return c.namespaces
+}
+
+func (c *clients) Workloads() WorkloadsClient {
+ return c.workloads
+}
+
+func (c *clients) VulnReports() VulnReportsClient {
+ return c.vulnReports
+}
+
+func (c *clients) Close() error {
+ if c.conn != nil {
+ return c.conn.Close()
+ }
+ return nil
+}
diff --git a/proto/platform/tenant/v1/cluster.platform.event.go b/proto/platform/tenant/v1/cluster.platform.event.go
new file mode 100644
index 00000000..aeb567ed
--- /dev/null
+++ b/proto/platform/tenant/v1/cluster.platform.event.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+import (
+ "chainguard.dev/sdk/uidp"
+)
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Cluster) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Cluster) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *DeleteClusterRequest) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return uidp.Parent(x.GetId()), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *DeleteClusterRequest) CloudEventsSubject() string {
+ return x.GetId()
+}
+
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
+func (x *DeleteClusterRequest) CloudEventsRedact() interface{} {
+ return nil
+}
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.go b/proto/platform/tenant/v1/cluster.platform.pb.go
new file mode 100644
index 00000000..60f6a6b3
--- /dev/null
+++ b/proto/platform/tenant/v1/cluster.platform.pb.go
@@ -0,0 +1,2934 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: cluster.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v11 "chainguard.dev/sdk/proto/platform/common/v1"
+ v1 "chainguard.dev/sdk/proto/platform/iam/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type ClusterDiscoveryRequest_State int32
+
+const (
+ ClusterDiscoveryRequest_UNKNOWN ClusterDiscoveryRequest_State = 0
+ ClusterDiscoveryRequest_UNSUPPORTED ClusterDiscoveryRequest_State = 1
+ ClusterDiscoveryRequest_NEEDS_WORK ClusterDiscoveryRequest_State = 2
+ ClusterDiscoveryRequest_ELIGIBLE ClusterDiscoveryRequest_State = 3
+ ClusterDiscoveryRequest_ENROLLED ClusterDiscoveryRequest_State = 4
+)
+
+// Enum value maps for ClusterDiscoveryRequest_State.
+var (
+ ClusterDiscoveryRequest_State_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "UNSUPPORTED",
+ 2: "NEEDS_WORK",
+ 3: "ELIGIBLE",
+ 4: "ENROLLED",
+ }
+ ClusterDiscoveryRequest_State_value = map[string]int32{
+ "UNKNOWN": 0,
+ "UNSUPPORTED": 1,
+ "NEEDS_WORK": 2,
+ "ELIGIBLE": 3,
+ "ENROLLED": 4,
+ }
+)
+
+func (x ClusterDiscoveryRequest_State) Enum() *ClusterDiscoveryRequest_State {
+ p := new(ClusterDiscoveryRequest_State)
+ *p = x
+ return p
+}
+
+func (x ClusterDiscoveryRequest_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ClusterDiscoveryRequest_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (ClusterDiscoveryRequest_State) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[0]
+}
+
+func (x ClusterDiscoveryRequest_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClusterDiscoveryRequest_State.Descriptor instead.
+func (ClusterDiscoveryRequest_State) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{2, 0}
+}
+
+type Cluster_NamespaceEnforcementMode int32
+
+const (
+ Cluster_OptOut Cluster_NamespaceEnforcementMode = 0
+ Cluster_OptIn Cluster_NamespaceEnforcementMode = 1
+)
+
+// Enum value maps for Cluster_NamespaceEnforcementMode.
+var (
+ Cluster_NamespaceEnforcementMode_name = map[int32]string{
+ 0: "OptOut",
+ 1: "OptIn",
+ }
+ Cluster_NamespaceEnforcementMode_value = map[string]int32{
+ "OptOut": 0,
+ "OptIn": 1,
+ }
+)
+
+func (x Cluster_NamespaceEnforcementMode) Enum() *Cluster_NamespaceEnforcementMode {
+ p := new(Cluster_NamespaceEnforcementMode)
+ *p = x
+ return p
+}
+
+func (x Cluster_NamespaceEnforcementMode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Cluster_NamespaceEnforcementMode) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (Cluster_NamespaceEnforcementMode) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[1]
+}
+
+func (x Cluster_NamespaceEnforcementMode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Cluster_NamespaceEnforcementMode.Descriptor instead.
+func (Cluster_NamespaceEnforcementMode) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 0}
+}
+
+type Cluster_Provider int32
+
+const (
+ Cluster_UNKNOWN Cluster_Provider = 0
+ Cluster_GKE Cluster_Provider = 1
+ Cluster_EKS Cluster_Provider = 2
+ // GCP Services (10+)
+ Cluster_CLOUD_RUN Cluster_Provider = 10
+ // AWS Services (20+)
+ Cluster_ECS Cluster_Provider = 20
+ Cluster_APP_RUNNER Cluster_Provider = 21
+ // For testing.
+ Cluster_KIND Cluster_Provider = 100
+)
+
+// Enum value maps for Cluster_Provider.
+var (
+ Cluster_Provider_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "GKE",
+ 2: "EKS",
+ 10: "CLOUD_RUN",
+ 20: "ECS",
+ 21: "APP_RUNNER",
+ 100: "KIND",
+ }
+ Cluster_Provider_value = map[string]int32{
+ "UNKNOWN": 0,
+ "GKE": 1,
+ "EKS": 2,
+ "CLOUD_RUN": 10,
+ "ECS": 20,
+ "APP_RUNNER": 21,
+ "KIND": 100,
+ }
+)
+
+func (x Cluster_Provider) Enum() *Cluster_Provider {
+ p := new(Cluster_Provider)
+ *p = x
+ return p
+}
+
+func (x Cluster_Provider) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Cluster_Provider) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[2].Descriptor()
+}
+
+func (Cluster_Provider) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[2]
+}
+
+func (x Cluster_Provider) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Cluster_Provider.Descriptor instead.
+func (Cluster_Provider) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 1}
+}
+
+type Cluster_Location int32
+
+const (
+ Cluster_AUTO Cluster_Location = 0
+ // Use 1xx for US
+ Cluster_US_EAST Cluster_Location = 101
+ Cluster_US_CENTRAL Cluster_Location = 102
+ Cluster_US_WEST Cluster_Location = 103
+)
+
+// Enum value maps for Cluster_Location.
+var (
+ Cluster_Location_name = map[int32]string{
+ 0: "AUTO",
+ 101: "US_EAST",
+ 102: "US_CENTRAL",
+ 103: "US_WEST",
+ }
+ Cluster_Location_value = map[string]int32{
+ "AUTO": 0,
+ "US_EAST": 101,
+ "US_CENTRAL": 102,
+ "US_WEST": 103,
+ }
+)
+
+func (x Cluster_Location) Enum() *Cluster_Location {
+ p := new(Cluster_Location)
+ *p = x
+ return p
+}
+
+func (x Cluster_Location) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Cluster_Location) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[3].Descriptor()
+}
+
+func (Cluster_Location) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[3]
+}
+
+func (x Cluster_Location) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Cluster_Location.Descriptor instead.
+func (Cluster_Location) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 2}
+}
+
+type Cluster_Status_State int32
+
+const (
+ Cluster_Status_UNKNOWN Cluster_Status_State = 0
+ Cluster_Status_Ready Cluster_Status_State = 1
+ Cluster_Status_NotReady Cluster_Status_State = 2
+)
+
+// Enum value maps for Cluster_Status_State.
+var (
+ Cluster_Status_State_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "Ready",
+ 2: "NotReady",
+ }
+ Cluster_Status_State_value = map[string]int32{
+ "UNKNOWN": 0,
+ "Ready": 1,
+ "NotReady": 2,
+ }
+)
+
+func (x Cluster_Status_State) Enum() *Cluster_Status_State {
+ p := new(Cluster_Status_State)
+ *p = x
+ return p
+}
+
+func (x Cluster_Status_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Cluster_Status_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[4].Descriptor()
+}
+
+func (Cluster_Status_State) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[4]
+}
+
+func (x Cluster_Status_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Cluster_Status_State.Descriptor instead.
+func (Cluster_Status_State) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 4, 0}
+}
+
+type ClusterConfigRequest_NamespaceEnforcementMode int32
+
+const (
+ ClusterConfigRequest_OptOut ClusterConfigRequest_NamespaceEnforcementMode = 0
+ ClusterConfigRequest_OptIn ClusterConfigRequest_NamespaceEnforcementMode = 1
+)
+
+// Enum value maps for ClusterConfigRequest_NamespaceEnforcementMode.
+var (
+ ClusterConfigRequest_NamespaceEnforcementMode_name = map[int32]string{
+ 0: "OptOut",
+ 1: "OptIn",
+ }
+ ClusterConfigRequest_NamespaceEnforcementMode_value = map[string]int32{
+ "OptOut": 0,
+ "OptIn": 1,
+ }
+)
+
+func (x ClusterConfigRequest_NamespaceEnforcementMode) Enum() *ClusterConfigRequest_NamespaceEnforcementMode {
+ p := new(ClusterConfigRequest_NamespaceEnforcementMode)
+ *p = x
+ return p
+}
+
+func (x ClusterConfigRequest_NamespaceEnforcementMode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ClusterConfigRequest_NamespaceEnforcementMode) Descriptor() protoreflect.EnumDescriptor {
+ return file_cluster_platform_proto_enumTypes[5].Descriptor()
+}
+
+func (ClusterConfigRequest_NamespaceEnforcementMode) Type() protoreflect.EnumType {
+ return &file_cluster_platform_proto_enumTypes[5]
+}
+
+func (x ClusterConfigRequest_NamespaceEnforcementMode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClusterConfigRequest_NamespaceEnforcementMode.Descriptor instead.
+func (ClusterConfigRequest_NamespaceEnforcementMode) EnumDescriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{10, 0}
+}
+
+type CreateClusterRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // parent_id, The Group under which this Cluster resides.
+ ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+ // Cluster is the definition of the managed cluster to create.
+ Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"`
+}
+
+func (x *CreateClusterRequest) Reset() {
+ *x = CreateClusterRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateClusterRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateClusterRequest) ProtoMessage() {}
+
+func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateClusterRequest.ProtoReflect.Descriptor instead.
+func (*CreateClusterRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *CreateClusterRequest) GetParentId() string {
+ if x != nil {
+ return x.ParentId
+ }
+ return ""
+}
+
+func (x *CreateClusterRequest) GetCluster() *Cluster {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+type DeleteClusterRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *DeleteClusterRequest) Reset() {
+ *x = DeleteClusterRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *DeleteClusterRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteClusterRequest) ProtoMessage() {}
+
+func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteClusterRequest.ProtoReflect.Descriptor instead.
+func (*DeleteClusterRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *DeleteClusterRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type ClusterDiscoveryRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UIDP of the group to impersonate to search for clusters.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // providers is the list of providers to perform discovery on.
+ Providers []Cluster_Provider `protobuf:"varint,2,rep,packed,name=providers,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"providers,omitempty"`
+ // profiles includes the set of profiles to perform discovery for,
+ // which may impact eligibility (some profiles may not be supported
+ // on some providers).
+ Profiles []string `protobuf:"bytes,3,rep,name=profiles,proto3" json:"profiles,omitempty"`
+ // states is a collection of the states to return, or all if
+ // none are specified.
+ States []ClusterDiscoveryRequest_State `protobuf:"varint,4,rep,packed,name=states,proto3,enum=chainguard.platform.tenant.ClusterDiscoveryRequest_State" json:"states,omitempty"`
+}
+
+func (x *ClusterDiscoveryRequest) Reset() {
+ *x = ClusterDiscoveryRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryRequest) ProtoMessage() {}
+
+func (x *ClusterDiscoveryRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryRequest.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ClusterDiscoveryRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *ClusterDiscoveryRequest) GetProviders() []Cluster_Provider {
+ if x != nil {
+ return x.Providers
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryRequest) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryRequest) GetStates() []ClusterDiscoveryRequest_State {
+ if x != nil {
+ return x.States
+ }
+ return nil
+}
+
+type ClusterDiscoveryResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Results []*ClusterDiscoveryResponse_Result `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
+}
+
+func (x *ClusterDiscoveryResponse) Reset() {
+ *x = ClusterDiscoveryResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ClusterDiscoveryResponse) GetResults() []*ClusterDiscoveryResponse_Result {
+ if x != nil {
+ return x.Results
+ }
+ return nil
+}
+
+type Cluster struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Cluster UIDP under which this Cluster resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // remote_id is the remote ID of this cluster.
+ RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ // issuer is the identity issuer tied to this cluster.
+ Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ // registered tracks the timestamp at which this cluster was registered.
+ Registered *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=registered,proto3" json:"registered,omitempty"`
+ // last_seen tracks the timestamp at which this cluster was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // version holds the Kubernetes version last reported by the cluster.
+ Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"`
+ // agent_version holds the version of the Chainguard agent last reported by the cluster.
+ AgentVersion string `protobuf:"bytes,7,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"`
+ // activity is a mapping from "Source" URLs to an activity record summarizing
+ // recent activity from this source.
+ Activity map[string]*ClusterActivity `protobuf:"bytes,8,rep,name=activity,proto3" json:"activity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // name of the cluster.
+ Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this cluster.
+ Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"`
+ // group the cluster resides in
+ Group *v1.Group `protobuf:"bytes,99,opt,name=group,proto3" json:"group,omitempty"`
+ // managed_name is the unique name we have given to this cluster's managed agent.
+ // This field is output-only, and is populated only when this cluster is "managed".
+ ManagedName string `protobuf:"bytes,100,opt,name=managed_name,json=managedName,proto3" json:"managed_name,omitempty"`
+ // provider holds the flavor of cluster provider, which is used to determine how we
+ // authenticate with the cluster.
+ Provider Cluster_Provider `protobuf:"varint,101,opt,name=provider,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"provider,omitempty"`
+ // affinity specifies a scheduling preference for where to run the managed agent.
+ // Other factors, such as the provider may be taken into account when choosing a
+ // host cluster.
+ Affinity Cluster_Location `protobuf:"varint,105,opt,name=affinity,proto3,enum=chainguard.platform.tenant.Cluster_Location" json:"affinity,omitempty"`
+ // info contains the cluster information from the kubeconfig context.
+ Info *Cluster_Info `protobuf:"bytes,102,opt,name=info,proto3" json:"info,omitempty"`
+ // auth_info holds authentication details for connecting to KinD in test scenarios.
+ AuthInfo *Cluster_AuthInfo `protobuf:"bytes,104,opt,name=auth_info,json=authInfo,proto3" json:"auth_info,omitempty"`
+ // status contains the managed cluster's status.
+ Status *Cluster_Status `protobuf:"bytes,103,opt,name=status,proto3" json:"status,omitempty"`
+ // host_cluster surfaces the opaque identifier for the Chainguard cluster hosting
+ // this agent.
+ HostCluster string `protobuf:"bytes,106,opt,name=host_cluster,json=hostCluster,proto3" json:"host_cluster,omitempty"`
+ // profiles specifies the root set of tenant configurations that we want to run
+ // on this cluster.
+ Profiles []string `protobuf:"bytes,107,rep,name=profiles,proto3" json:"profiles,omitempty"`
+ // EnforcerOptions contains additional Enforcer configuration settings.
+ // +optional
+ EnforcerOptions *Cluster_EnforcerOptions `protobuf:"bytes,108,opt,name=enforcer_options,json=enforcerOptions,proto3,oneof" json:"enforcer_options,omitempty"`
+}
+
+func (x *Cluster) Reset() {
+ *x = Cluster{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Cluster) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Cluster) ProtoMessage() {}
+
+func (x *Cluster) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
+func (*Cluster) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Cluster) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Cluster) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *Cluster) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *Cluster) GetRegistered() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Registered
+ }
+ return nil
+}
+
+func (x *Cluster) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Cluster) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *Cluster) GetAgentVersion() string {
+ if x != nil {
+ return x.AgentVersion
+ }
+ return ""
+}
+
+func (x *Cluster) GetActivity() map[string]*ClusterActivity {
+ if x != nil {
+ return x.Activity
+ }
+ return nil
+}
+
+func (x *Cluster) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Cluster) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Cluster) GetGroup() *v1.Group {
+ if x != nil {
+ return x.Group
+ }
+ return nil
+}
+
+func (x *Cluster) GetManagedName() string {
+ if x != nil {
+ return x.ManagedName
+ }
+ return ""
+}
+
+func (x *Cluster) GetProvider() Cluster_Provider {
+ if x != nil {
+ return x.Provider
+ }
+ return Cluster_UNKNOWN
+}
+
+func (x *Cluster) GetAffinity() Cluster_Location {
+ if x != nil {
+ return x.Affinity
+ }
+ return Cluster_AUTO
+}
+
+func (x *Cluster) GetInfo() *Cluster_Info {
+ if x != nil {
+ return x.Info
+ }
+ return nil
+}
+
+func (x *Cluster) GetAuthInfo() *Cluster_AuthInfo {
+ if x != nil {
+ return x.AuthInfo
+ }
+ return nil
+}
+
+func (x *Cluster) GetStatus() *Cluster_Status {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+func (x *Cluster) GetHostCluster() string {
+ if x != nil {
+ return x.HostCluster
+ }
+ return ""
+}
+
+func (x *Cluster) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+func (x *Cluster) GetEnforcerOptions() *Cluster_EnforcerOptions {
+ if x != nil {
+ return x.EnforcerOptions
+ }
+ return nil
+}
+
+type ClusterActivity struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // profile is the Chainguard profile to which the source of this activity belongs.
+ Profile string `protobuf:"bytes,6,opt,name=profile,proto3" json:"profile,omitempty"`
+ // namespace is the namespace in which the source of this cluster activity lives.
+ Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ // controller_name is the name of the Controller CRD which was the source of this
+ // activity on the tenant cluster.
+ ControllerName string `protobuf:"bytes,2,opt,name=controller_name,json=controllerName,proto3" json:"controller_name,omitempty"`
+ // webhook_name is the name of the Webhook CRD which was the source of this
+ // activity on the tenant cluster.
+ WebhookName string `protobuf:"bytes,3,opt,name=webhook_name,json=webhookName,proto3" json:"webhook_name,omitempty"`
+ // spec_hash is the hash of the Controller or Webhook CRD's spec, which forms a
+ // loose form of versioning.
+ SpecHash string `protobuf:"bytes,4,opt,name=spec_hash,json=specHash,proto3" json:"spec_hash,omitempty"`
+ // last_seen tracks the timestamp at which this source was last active.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+}
+
+func (x *ClusterActivity) Reset() {
+ *x = ClusterActivity{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterActivity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterActivity) ProtoMessage() {}
+
+func (x *ClusterActivity) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterActivity.ProtoReflect.Descriptor instead.
+func (*ClusterActivity) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *ClusterActivity) GetProfile() string {
+ if x != nil {
+ return x.Profile
+ }
+ return ""
+}
+
+func (x *ClusterActivity) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *ClusterActivity) GetControllerName() string {
+ if x != nil {
+ return x.ControllerName
+ }
+ return ""
+}
+
+func (x *ClusterActivity) GetWebhookName() string {
+ if x != nil {
+ return x.WebhookName
+ }
+ return ""
+}
+
+func (x *ClusterActivity) GetSpecHash() string {
+ if x != nil {
+ return x.SpecHash
+ }
+ return ""
+}
+
+func (x *ClusterActivity) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+type ClusterList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Cluster `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *ClusterList) Reset() {
+ *x = ClusterList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterList) ProtoMessage() {}
+
+func (x *ClusterList) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterList.ProtoReflect.Descriptor instead.
+func (*ClusterList) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *ClusterList) GetItems() []*Cluster {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type ClusterFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // active_since is the timestamp after which returned clusters should have been active.
+ // This applies to both cluster registration and when it was "last seen".
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // uidp filers records based on their position in the group hierarchy.
+ Uidp *v11.UIDPFilter `protobuf:"bytes,3,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // remote_id is the remote ID of this cluster.
+ RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ // name is the exact name of the cluster.
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *ClusterFilter) Reset() {
+ *x = ClusterFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterFilter) ProtoMessage() {}
+
+func (x *ClusterFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterFilter.ProtoReflect.Descriptor instead.
+func (*ClusterFilter) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *ClusterFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *ClusterFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *ClusterFilter) GetUidp() *v11.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *ClusterFilter) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *ClusterFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+type ClusterProfilesRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ClusterProfilesRequest) Reset() {
+ *x = ClusterProfilesRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterProfilesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterProfilesRequest) ProtoMessage() {}
+
+func (x *ClusterProfilesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterProfilesRequest.ProtoReflect.Descriptor instead.
+func (*ClusterProfilesRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{8}
+}
+
+type ClusterProfilesResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Profile []*ClusterProfilesResponse_Profile `protobuf:"bytes,1,rep,name=profile,proto3" json:"profile,omitempty"`
+}
+
+func (x *ClusterProfilesResponse) Reset() {
+ *x = ClusterProfilesResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterProfilesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterProfilesResponse) ProtoMessage() {}
+
+func (x *ClusterProfilesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterProfilesResponse.ProtoReflect.Descriptor instead.
+func (*ClusterProfilesResponse) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ClusterProfilesResponse) GetProfile() []*ClusterProfilesResponse_Profile {
+ if x != nil {
+ return x.Profile
+ }
+ return nil
+}
+
+type ClusterConfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // profiles specifies the root profiles we want as part of this configuration.
+ Profiles []string `protobuf:"bytes,1,rep,name=profiles,proto3" json:"profiles,omitempty"`
+ // EnforcerOptions contains additional Enforcer configuration settings.
+ EnforcerOptions *ClusterConfigRequest_EnforcerOptions `protobuf:"bytes,2,opt,name=enforcer_options,json=enforcerOptions,proto3,oneof" json:"enforcer_options,omitempty"`
+}
+
+func (x *ClusterConfigRequest) Reset() {
+ *x = ClusterConfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterConfigRequest) ProtoMessage() {}
+
+func (x *ClusterConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterConfigRequest.ProtoReflect.Descriptor instead.
+func (*ClusterConfigRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *ClusterConfigRequest) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+func (x *ClusterConfigRequest) GetEnforcerOptions() *ClusterConfigRequest_EnforcerOptions {
+ if x != nil {
+ return x.EnforcerOptions
+ }
+ return nil
+}
+
+type ClusterConfigResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ McpConfig []byte `protobuf:"bytes,1,opt,name=mcp_config,json=mcpConfig,proto3" json:"mcp_config,omitempty"`
+ TenantConfig []byte `protobuf:"bytes,2,opt,name=tenant_config,json=tenantConfig,proto3" json:"tenant_config,omitempty"`
+ // profiles includes the full set of profiles returned (including transitive
+ // dependencies of the input profiles)
+ Profiles []string `protobuf:"bytes,3,rep,name=profiles,proto3" json:"profiles,omitempty"`
+}
+
+func (x *ClusterConfigResponse) Reset() {
+ *x = ClusterConfigResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterConfigResponse) ProtoMessage() {}
+
+func (x *ClusterConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterConfigResponse.ProtoReflect.Descriptor instead.
+func (*ClusterConfigResponse) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *ClusterConfigResponse) GetMcpConfig() []byte {
+ if x != nil {
+ return x.McpConfig
+ }
+ return nil
+}
+
+func (x *ClusterConfigResponse) GetTenantConfig() []byte {
+ if x != nil {
+ return x.TenantConfig
+ }
+ return nil
+}
+
+func (x *ClusterConfigResponse) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+type ClusterCIDRRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ClusterCIDRRequest) Reset() {
+ *x = ClusterCIDRRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterCIDRRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterCIDRRequest) ProtoMessage() {}
+
+func (x *ClusterCIDRRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterCIDRRequest.ProtoReflect.Descriptor instead.
+func (*ClusterCIDRRequest) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{12}
+}
+
+type ClusterCIDRResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // cidr_blocks specifies the cidr blocks enforce uses to communicate with clusters.
+ CidrBlocks []string `protobuf:"bytes,1,rep,name=cidr_blocks,json=cidrBlocks,proto3" json:"cidr_blocks,omitempty"`
+}
+
+func (x *ClusterCIDRResponse) Reset() {
+ *x = ClusterCIDRResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterCIDRResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterCIDRResponse) ProtoMessage() {}
+
+func (x *ClusterCIDRResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterCIDRResponse.ProtoReflect.Descriptor instead.
+func (*ClusterCIDRResponse) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *ClusterCIDRResponse) GetCidrBlocks() []string {
+ if x != nil {
+ return x.CidrBlocks
+ }
+ return nil
+}
+
+type ClusterDiscoveryResponse_Result struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Provider Cluster_Provider `protobuf:"varint,1,opt,name=provider,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"provider,omitempty"`
+ Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"`
+ Location Cluster_Location `protobuf:"varint,3,opt,name=location,proto3,enum=chainguard.platform.tenant.Cluster_Location" json:"location,omitempty"`
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ // Types that are assignable to State:
+ //
+ // *ClusterDiscoveryResponse_Result_Unsupported_
+ // *ClusterDiscoveryResponse_Result_NeedsWork_
+ // *ClusterDiscoveryResponse_Result_Eligible_
+ // *ClusterDiscoveryResponse_Result_Enrolled_
+ State isClusterDiscoveryResponse_Result_State `protobuf_oneof:"state"`
+}
+
+func (x *ClusterDiscoveryResponse_Result) Reset() {
+ *x = ClusterDiscoveryResponse_Result{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse_Result) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse_Result) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse_Result) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse_Result.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse_Result) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0}
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetProvider() Cluster_Provider {
+ if x != nil {
+ return x.Provider
+ }
+ return Cluster_UNKNOWN
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetAccount() string {
+ if x != nil {
+ return x.Account
+ }
+ return ""
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetLocation() Cluster_Location {
+ if x != nil {
+ return x.Location
+ }
+ return Cluster_AUTO
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (m *ClusterDiscoveryResponse_Result) GetState() isClusterDiscoveryResponse_Result_State {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetUnsupported() *ClusterDiscoveryResponse_Result_Unsupported {
+ if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Unsupported_); ok {
+ return x.Unsupported
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetNeedsWork() *ClusterDiscoveryResponse_Result_NeedsWork {
+ if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_NeedsWork_); ok {
+ return x.NeedsWork
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetEligible() *ClusterDiscoveryResponse_Result_Eligible {
+ if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Eligible_); ok {
+ return x.Eligible
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryResponse_Result) GetEnrolled() *ClusterDiscoveryResponse_Result_Enrolled {
+ if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Enrolled_); ok {
+ return x.Enrolled
+ }
+ return nil
+}
+
+type isClusterDiscoveryResponse_Result_State interface {
+ isClusterDiscoveryResponse_Result_State()
+}
+
+type ClusterDiscoveryResponse_Result_Unsupported_ struct {
+ // unsupported clusters cannot be enrolled with our
+ // Agentless cluster support.
+ Unsupported *ClusterDiscoveryResponse_Result_Unsupported `protobuf:"bytes,10,opt,name=unsupported,proto3,oneof"`
+}
+
+type ClusterDiscoveryResponse_Result_NeedsWork_ struct {
+ // needs_work clusters can be modified in some way so
+ // that they are supported by our Agentless infrastructure.
+ NeedsWork *ClusterDiscoveryResponse_Result_NeedsWork `protobuf:"bytes,11,opt,name=needs_work,json=needsWork,proto3,oneof"`
+}
+
+type ClusterDiscoveryResponse_Result_Eligible_ struct {
+ // eligible clusters are able to be directly enrolled as
+ // agentless tenants immediately. This message contains
+ // all of the information needed to enroll this cluster.
+ Eligible *ClusterDiscoveryResponse_Result_Eligible `protobuf:"bytes,12,opt,name=eligible,proto3,oneof"`
+}
+
+type ClusterDiscoveryResponse_Result_Enrolled_ struct {
+ // enrolled clusters are clusters that have already been
+ // enrolled as agentless tenants.
+ Enrolled *ClusterDiscoveryResponse_Result_Enrolled `protobuf:"bytes,13,opt,name=enrolled,proto3,oneof"`
+}
+
+func (*ClusterDiscoveryResponse_Result_Unsupported_) isClusterDiscoveryResponse_Result_State() {}
+
+func (*ClusterDiscoveryResponse_Result_NeedsWork_) isClusterDiscoveryResponse_Result_State() {}
+
+func (*ClusterDiscoveryResponse_Result_Eligible_) isClusterDiscoveryResponse_Result_State() {}
+
+func (*ClusterDiscoveryResponse_Result_Enrolled_) isClusterDiscoveryResponse_Result_State() {}
+
+type ClusterDiscoveryResponse_Result_Unsupported struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // reason holds the reason the cluster is not currently supported.
+ Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
+}
+
+func (x *ClusterDiscoveryResponse_Result_Unsupported) Reset() {
+ *x = ClusterDiscoveryResponse_Result_Unsupported{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse_Result_Unsupported) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse_Result_Unsupported) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse_Result_Unsupported) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse_Result_Unsupported.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse_Result_Unsupported) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 0}
+}
+
+func (x *ClusterDiscoveryResponse_Result_Unsupported) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+type ClusterDiscoveryResponse_Result_NeedsWork struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // steps holds the set of changes the user needs to make in order
+ // for the cluster to become eligible.
+ Steps []string `protobuf:"bytes,1,rep,name=steps,proto3" json:"steps,omitempty"`
+}
+
+func (x *ClusterDiscoveryResponse_Result_NeedsWork) Reset() {
+ *x = ClusterDiscoveryResponse_Result_NeedsWork{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse_Result_NeedsWork) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse_Result_NeedsWork) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse_Result_NeedsWork) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[16]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse_Result_NeedsWork.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse_Result_NeedsWork) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 1}
+}
+
+func (x *ClusterDiscoveryResponse_Result_NeedsWork) GetSteps() []string {
+ if x != nil {
+ return x.Steps
+ }
+ return nil
+}
+
+type ClusterDiscoveryResponse_Result_Eligible struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Info *Cluster_Info `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
+}
+
+func (x *ClusterDiscoveryResponse_Result_Eligible) Reset() {
+ *x = ClusterDiscoveryResponse_Result_Eligible{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse_Result_Eligible) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse_Result_Eligible) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse_Result_Eligible) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse_Result_Eligible.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse_Result_Eligible) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 2}
+}
+
+func (x *ClusterDiscoveryResponse_Result_Eligible) GetInfo() *Cluster_Info {
+ if x != nil {
+ return x.Info
+ }
+ return nil
+}
+
+type ClusterDiscoveryResponse_Result_Enrolled struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the UIDP of the tenant Cluster.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // profiles contains the set of profiles that this
+ // cluster was enrolled with.
+ Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
+ Info *Cluster_Info `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"`
+}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) Reset() {
+ *x = ClusterDiscoveryResponse_Result_Enrolled{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterDiscoveryResponse_Result_Enrolled) ProtoMessage() {}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[18]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterDiscoveryResponse_Result_Enrolled.ProtoReflect.Descriptor instead.
+func (*ClusterDiscoveryResponse_Result_Enrolled) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 3}
+}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
+ }
+ return nil
+}
+
+func (x *ClusterDiscoveryResponse_Result_Enrolled) GetInfo() *Cluster_Info {
+ if x != nil {
+ return x.Info
+ }
+ return nil
+}
+
+type Cluster_EnforcerOptions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // +optional
+ WebhookFailOpen *bool `protobuf:"varint,1,opt,name=webhook_fail_open,json=webhookFailOpen,proto3,oneof" json:"webhook_fail_open,omitempty"`
+ // +optional
+ EnableCipCache *bool `protobuf:"varint,2,opt,name=enable_cip_cache,json=enableCipCache,proto3,oneof" json:"enable_cip_cache,omitempty"`
+ // +optional
+ NamespaceEnforcementMode *Cluster_NamespaceEnforcementMode `protobuf:"varint,3,opt,name=namespace_enforcement_mode,json=namespaceEnforcementMode,proto3,enum=chainguard.platform.tenant.Cluster_NamespaceEnforcementMode,oneof" json:"namespace_enforcement_mode,omitempty"`
+}
+
+func (x *Cluster_EnforcerOptions) Reset() {
+ *x = Cluster_EnforcerOptions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Cluster_EnforcerOptions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Cluster_EnforcerOptions) ProtoMessage() {}
+
+func (x *Cluster_EnforcerOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[20]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cluster_EnforcerOptions.ProtoReflect.Descriptor instead.
+func (*Cluster_EnforcerOptions) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 1}
+}
+
+func (x *Cluster_EnforcerOptions) GetWebhookFailOpen() bool {
+ if x != nil && x.WebhookFailOpen != nil {
+ return *x.WebhookFailOpen
+ }
+ return false
+}
+
+func (x *Cluster_EnforcerOptions) GetEnableCipCache() bool {
+ if x != nil && x.EnableCipCache != nil {
+ return *x.EnableCipCache
+ }
+ return false
+}
+
+func (x *Cluster_EnforcerOptions) GetNamespaceEnforcementMode() Cluster_NamespaceEnforcementMode {
+ if x != nil && x.NamespaceEnforcementMode != nil {
+ return *x.NamespaceEnforcementMode
+ }
+ return Cluster_OptOut
+}
+
+// This is based off of k8s.io/client-go/tools/clientcmd/api/v1.Cluster
+// This can be extracted from kubectl for a named cluster (replace CLUSTER_NAME) with:
+//
+// kubectl config view \
+// --flatten -o jsonpath='{.clusters[?(@.name == "CLUSTER_NAME")].cluster}'
+type Cluster_Info struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Server is the address of the kubernetes cluster (https://hostname:port).
+ Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
+ // CertificateAuthorityData contains PEM-encoded certificate authority certificates.
+ // Overrides CertificateAuthority
+ CertificateAuthorityData []byte `protobuf:"bytes,5,opt,name=CertificateAuthorityData,proto3" json:"CertificateAuthorityData,omitempty"`
+}
+
+func (x *Cluster_Info) Reset() {
+ *x = Cluster_Info{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Cluster_Info) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Cluster_Info) ProtoMessage() {}
+
+func (x *Cluster_Info) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[21]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cluster_Info.ProtoReflect.Descriptor instead.
+func (*Cluster_Info) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 2}
+}
+
+func (x *Cluster_Info) GetServer() string {
+ if x != nil {
+ return x.Server
+ }
+ return ""
+}
+
+func (x *Cluster_Info) GetCertificateAuthorityData() []byte {
+ if x != nil {
+ return x.CertificateAuthorityData
+ }
+ return nil
+}
+
+// This is based off of k8s.io/client-go/tools/clientcmd/api/v1.AuthInfo
+// This should only ever be used with KinD clusters during testing, it WILL
+// NOT be stored securely.
+type Cluster_AuthInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // client_certificate_data contains PEM-encoded data from a client cert file for TLS.
+ ClientCertificateData []byte `protobuf:"bytes,2,opt,name=client_certificate_data,json=clientCertificateData,proto3" json:"client_certificate_data,omitempty"`
+ // client_key_data contains PEM-encoded data from a client key file for TLS.
+ ClientKeyData []byte `protobuf:"bytes,4,opt,name=client_key_data,json=clientKeyData,proto3" json:"client_key_data,omitempty"`
+}
+
+func (x *Cluster_AuthInfo) Reset() {
+ *x = Cluster_AuthInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Cluster_AuthInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Cluster_AuthInfo) ProtoMessage() {}
+
+func (x *Cluster_AuthInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[22]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cluster_AuthInfo.ProtoReflect.Descriptor instead.
+func (*Cluster_AuthInfo) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 3}
+}
+
+func (x *Cluster_AuthInfo) GetClientCertificateData() []byte {
+ if x != nil {
+ return x.ClientCertificateData
+ }
+ return nil
+}
+
+func (x *Cluster_AuthInfo) GetClientKeyData() []byte {
+ if x != nil {
+ return x.ClientKeyData
+ }
+ return nil
+}
+
+type Cluster_Status struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Ready Cluster_Status_State `protobuf:"varint,1,opt,name=ready,proto3,enum=chainguard.platform.tenant.Cluster_Status_State" json:"ready,omitempty"`
+ Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+ Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
+}
+
+func (x *Cluster_Status) Reset() {
+ *x = Cluster_Status{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Cluster_Status) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Cluster_Status) ProtoMessage() {}
+
+func (x *Cluster_Status) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cluster_Status.ProtoReflect.Descriptor instead.
+func (*Cluster_Status) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{4, 4}
+}
+
+func (x *Cluster_Status) GetReady() Cluster_Status_State {
+ if x != nil {
+ return x.Ready
+ }
+ return Cluster_Status_UNKNOWN
+}
+
+func (x *Cluster_Status) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+func (x *Cluster_Status) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+type ClusterProfilesResponse_Profile struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ Dependencies []string `protobuf:"bytes,3,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
+}
+
+func (x *ClusterProfilesResponse_Profile) Reset() {
+ *x = ClusterProfilesResponse_Profile{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterProfilesResponse_Profile) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterProfilesResponse_Profile) ProtoMessage() {}
+
+func (x *ClusterProfilesResponse_Profile) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterProfilesResponse_Profile.ProtoReflect.Descriptor instead.
+func (*ClusterProfilesResponse_Profile) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{9, 0}
+}
+
+func (x *ClusterProfilesResponse_Profile) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ClusterProfilesResponse_Profile) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ClusterProfilesResponse_Profile) GetDependencies() []string {
+ if x != nil {
+ return x.Dependencies
+ }
+ return nil
+}
+
+type ClusterConfigRequest_EnforcerOptions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // +optional
+ WebhookFailOpen *bool `protobuf:"varint,1,opt,name=webhook_fail_open,json=webhookFailOpen,proto3,oneof" json:"webhook_fail_open,omitempty"`
+ // +optional
+ EnableCipCache *bool `protobuf:"varint,2,opt,name=enable_cip_cache,json=enableCipCache,proto3,oneof" json:"enable_cip_cache,omitempty"`
+ // +optional
+ NamespaceEnforcementMode *ClusterConfigRequest_NamespaceEnforcementMode `protobuf:"varint,3,opt,name=namespace_enforcement_mode,json=namespaceEnforcementMode,proto3,enum=chainguard.platform.tenant.ClusterConfigRequest_NamespaceEnforcementMode,oneof" json:"namespace_enforcement_mode,omitempty"`
+}
+
+func (x *ClusterConfigRequest_EnforcerOptions) Reset() {
+ *x = ClusterConfigRequest_EnforcerOptions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_cluster_platform_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ClusterConfigRequest_EnforcerOptions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClusterConfigRequest_EnforcerOptions) ProtoMessage() {}
+
+func (x *ClusterConfigRequest_EnforcerOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_cluster_platform_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClusterConfigRequest_EnforcerOptions.ProtoReflect.Descriptor instead.
+func (*ClusterConfigRequest_EnforcerOptions) Descriptor() ([]byte, []int) {
+ return file_cluster_platform_proto_rawDescGZIP(), []int{10, 0}
+}
+
+func (x *ClusterConfigRequest_EnforcerOptions) GetWebhookFailOpen() bool {
+ if x != nil && x.WebhookFailOpen != nil {
+ return *x.WebhookFailOpen
+ }
+ return false
+}
+
+func (x *ClusterConfigRequest_EnforcerOptions) GetEnableCipCache() bool {
+ if x != nil && x.EnableCipCache != nil {
+ return *x.EnableCipCache
+ }
+ return false
+}
+
+func (x *ClusterConfigRequest_EnforcerOptions) GetNamespaceEnforcementMode() ClusterConfigRequest_NamespaceEnforcementMode {
+ if x != nil && x.NamespaceEnforcementMode != nil {
+ return *x.NamespaceEnforcementMode
+ }
+ return ClusterConfigRequest_OptOut
+}
+
+var File_cluster_platform_proto protoreflect.FileDescriptor
+
+var file_cluster_platform_proto_rawDesc = []byte{
+ 0x0a, 0x16, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
+ 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
+ 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x22, 0x7a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a,
+ 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x2e, 0x0a, 0x14,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xbf, 0x02, 0x0a,
+ 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
+ 0x72, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
+ 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x05, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+ 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44,
+ 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x57, 0x4f, 0x52, 0x4b,
+ 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4c, 0x49, 0x47, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03,
+ 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xee,
+ 0x07, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76,
+ 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x73, 0x1a, 0xfa, 0x06, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a,
+ 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70,
+ 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x12, 0x48, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x6b, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
+ 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c,
+ 0x74, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52,
+ 0x0b, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x0a,
+ 0x6e, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x45, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4e, 0x65,
+ 0x65, 0x64, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x65, 0x64, 0x73,
+ 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x62, 0x0a, 0x08, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f,
+ 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08,
+ 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x62, 0x0a, 0x08, 0x65, 0x6e, 0x72, 0x6f,
+ 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44,
+ 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64,
+ 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x1a, 0x25, 0x0a, 0x0b,
+ 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x1a, 0x21, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x73, 0x57, 0x6f, 0x72, 0x6b,
+ 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x1a, 0x48, 0x0a, 0x08, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62,
+ 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
+ 0x1a, 0x74, 0x0a, 0x08, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f,
+ 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22,
+ 0xf7, 0x0f, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65,
+ 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x18, 0x0a,
+ 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+ 0x61, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x08,
+ 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+ 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d,
+ 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72,
+ 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76,
+ 0x69, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x08, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79,
+ 0x18, 0x69, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3c,
+ 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x09,
+ 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61,
+ 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x68,
+ 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x6a, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x6b, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x10, 0x65, 0x6e,
+ 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x6c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63,
+ 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x6e, 0x66,
+ 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x1a,
+ 0x68, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xbc, 0x02, 0x0a, 0x0f, 0x45, 0x6e,
+ 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a,
+ 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70,
+ 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x65, 0x62, 0x68,
+ 0x6f, 0x6f, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d,
+ 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63,
+ 0x68, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x43, 0x69, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7f, 0x0a,
+ 0x1a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72,
+ 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48,
+ 0x02, 0x52, 0x18, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14,
+ 0x0a, 0x12, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f,
+ 0x6f, 0x70, 0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f,
+ 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f,
+ 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x43, 0x65, 0x72, 0x74,
+ 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
+ 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x43, 0x65, 0x72, 0x74,
+ 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
+ 0x44, 0x61, 0x74, 0x61, 0x1a, 0x6a, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f,
+ 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69,
+ 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0c, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
+ 0x63, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0c, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61,
+ 0x1a, 0xb1, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x72,
+ 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x72, 0x65,
+ 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52,
+ 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61,
+ 0x64, 0x79, 0x10, 0x02, 0x22, 0x31, 0x0a, 0x18, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65,
+ 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
+ 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x10, 0x01, 0x22, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
+ 0x12, 0x07, 0x0a, 0x03, 0x47, 0x4b, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4b, 0x53,
+ 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x52, 0x55, 0x4e, 0x10,
+ 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x43, 0x53, 0x10, 0x14, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50,
+ 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x15, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x49,
+ 0x4e, 0x44, 0x10, 0x64, 0x22, 0x3e, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53,
+ 0x5f, 0x45, 0x41, 0x53, 0x54, 0x10, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x53, 0x5f, 0x43, 0x45,
+ 0x4e, 0x54, 0x52, 0x41, 0x4c, 0x10, 0x66, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x5f, 0x57, 0x45,
+ 0x53, 0x54, 0x10, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
+ 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a,
+ 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+ 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21,
+ 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x37,
+ 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c,
+ 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x48, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69,
+ 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e,
+ 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49,
+ 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x1b,
+ 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+ 0x18, 0x0a, 0x16, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x63, 0x0a, 0x07,
+ 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a,
+ 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65,
+ 0x73, 0x22, 0xb9, 0x04, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63,
+ 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x40, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xca, 0x02, 0x0a, 0x0f, 0x45, 0x6e, 0x66,
+ 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x11,
+ 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70, 0x65,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x65, 0x62, 0x68, 0x6f,
+ 0x6f, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a,
+ 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63, 0x68,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x43, 0x69, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8c, 0x01, 0x0a,
+ 0x1a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72,
+ 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66,
+ 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x02, 0x52, 0x18,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f,
+ 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70, 0x65,
+ 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70,
+ 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+ 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x18, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64,
+ 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x10, 0x00, 0x12, 0x09, 0x0a,
+ 0x05, 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x10, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x66,
+ 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x77, 0x0a,
+ 0x15, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x63, 0x70, 0x5f, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x63, 0x70, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x36, 0x0a, 0x13,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x69, 0x64, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x69, 0x64, 0x72, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x73, 0x32, 0x8e, 0x0a, 0x0a, 0x08, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x73, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x22, 0x7e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x22, 0x2f, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
+ 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a,
+ 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x0a, 0x04, 0xf5, 0x03, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xc0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x30,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d,
+ 0x2a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf8, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x37, 0x0a,
+ 0x2c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f,
+ 0x76, 0x65, 0x72, 0x12, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
+ 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
+ 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
+ 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xf9, 0x03, 0xf7, 0x03, 0x12, 0x85, 0x01, 0x0a,
+ 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x1a, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x15, 0x12, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
+ 0xf7, 0x03, 0x10, 0x01, 0x12, 0xc3, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
+ 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x20, 0x1a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
+ 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf6, 0x03, 0xc2, 0xf0, 0x8e,
+ 0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x7d, 0x0a, 0x08, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x08, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00, 0x12, 0x77, 0x0a, 0x06, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02,
+ 0x12, 0x00, 0x12, 0x71, 0x0a, 0x04, 0x43, 0x49, 0x44, 0x52, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43,
+ 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43,
+ 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x02, 0x12, 0x00, 0x42, 0x72, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1a,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b,
+ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
+}
+
+var (
+ file_cluster_platform_proto_rawDescOnce sync.Once
+ file_cluster_platform_proto_rawDescData = file_cluster_platform_proto_rawDesc
+)
+
+func file_cluster_platform_proto_rawDescGZIP() []byte {
+ file_cluster_platform_proto_rawDescOnce.Do(func() {
+ file_cluster_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_cluster_platform_proto_rawDescData)
+ })
+ return file_cluster_platform_proto_rawDescData
+}
+
+var file_cluster_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_cluster_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_cluster_platform_proto_goTypes = []interface{}{
+ (ClusterDiscoveryRequest_State)(0), // 0: chainguard.platform.tenant.ClusterDiscoveryRequest.State
+ (Cluster_NamespaceEnforcementMode)(0), // 1: chainguard.platform.tenant.Cluster.NamespaceEnforcementMode
+ (Cluster_Provider)(0), // 2: chainguard.platform.tenant.Cluster.Provider
+ (Cluster_Location)(0), // 3: chainguard.platform.tenant.Cluster.Location
+ (Cluster_Status_State)(0), // 4: chainguard.platform.tenant.Cluster.Status.State
+ (ClusterConfigRequest_NamespaceEnforcementMode)(0), // 5: chainguard.platform.tenant.ClusterConfigRequest.NamespaceEnforcementMode
+ (*CreateClusterRequest)(nil), // 6: chainguard.platform.tenant.CreateClusterRequest
+ (*DeleteClusterRequest)(nil), // 7: chainguard.platform.tenant.DeleteClusterRequest
+ (*ClusterDiscoveryRequest)(nil), // 8: chainguard.platform.tenant.ClusterDiscoveryRequest
+ (*ClusterDiscoveryResponse)(nil), // 9: chainguard.platform.tenant.ClusterDiscoveryResponse
+ (*Cluster)(nil), // 10: chainguard.platform.tenant.Cluster
+ (*ClusterActivity)(nil), // 11: chainguard.platform.tenant.ClusterActivity
+ (*ClusterList)(nil), // 12: chainguard.platform.tenant.ClusterList
+ (*ClusterFilter)(nil), // 13: chainguard.platform.tenant.ClusterFilter
+ (*ClusterProfilesRequest)(nil), // 14: chainguard.platform.tenant.ClusterProfilesRequest
+ (*ClusterProfilesResponse)(nil), // 15: chainguard.platform.tenant.ClusterProfilesResponse
+ (*ClusterConfigRequest)(nil), // 16: chainguard.platform.tenant.ClusterConfigRequest
+ (*ClusterConfigResponse)(nil), // 17: chainguard.platform.tenant.ClusterConfigResponse
+ (*ClusterCIDRRequest)(nil), // 18: chainguard.platform.tenant.ClusterCIDRRequest
+ (*ClusterCIDRResponse)(nil), // 19: chainguard.platform.tenant.ClusterCIDRResponse
+ (*ClusterDiscoveryResponse_Result)(nil), // 20: chainguard.platform.tenant.ClusterDiscoveryResponse.Result
+ (*ClusterDiscoveryResponse_Result_Unsupported)(nil), // 21: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Unsupported
+ (*ClusterDiscoveryResponse_Result_NeedsWork)(nil), // 22: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.NeedsWork
+ (*ClusterDiscoveryResponse_Result_Eligible)(nil), // 23: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible
+ (*ClusterDiscoveryResponse_Result_Enrolled)(nil), // 24: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled
+ nil, // 25: chainguard.platform.tenant.Cluster.ActivityEntry
+ (*Cluster_EnforcerOptions)(nil), // 26: chainguard.platform.tenant.Cluster.EnforcerOptions
+ (*Cluster_Info)(nil), // 27: chainguard.platform.tenant.Cluster.Info
+ (*Cluster_AuthInfo)(nil), // 28: chainguard.platform.tenant.Cluster.AuthInfo
+ (*Cluster_Status)(nil), // 29: chainguard.platform.tenant.Cluster.Status
+ (*ClusterProfilesResponse_Profile)(nil), // 30: chainguard.platform.tenant.ClusterProfilesResponse.Profile
+ (*ClusterConfigRequest_EnforcerOptions)(nil), // 31: chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions
+ (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp
+ (*v1.Group)(nil), // 33: chainguard.platform.iam.Group
+ (*v11.UIDPFilter)(nil), // 34: chainguard.platform.common.UIDPFilter
+ (*emptypb.Empty)(nil), // 35: google.protobuf.Empty
+}
+var file_cluster_platform_proto_depIdxs = []int32{
+ 10, // 0: chainguard.platform.tenant.CreateClusterRequest.cluster:type_name -> chainguard.platform.tenant.Cluster
+ 2, // 1: chainguard.platform.tenant.ClusterDiscoveryRequest.providers:type_name -> chainguard.platform.tenant.Cluster.Provider
+ 0, // 2: chainguard.platform.tenant.ClusterDiscoveryRequest.states:type_name -> chainguard.platform.tenant.ClusterDiscoveryRequest.State
+ 20, // 3: chainguard.platform.tenant.ClusterDiscoveryResponse.results:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result
+ 32, // 4: chainguard.platform.tenant.Cluster.registered:type_name -> google.protobuf.Timestamp
+ 32, // 5: chainguard.platform.tenant.Cluster.last_seen:type_name -> google.protobuf.Timestamp
+ 25, // 6: chainguard.platform.tenant.Cluster.activity:type_name -> chainguard.platform.tenant.Cluster.ActivityEntry
+ 33, // 7: chainguard.platform.tenant.Cluster.group:type_name -> chainguard.platform.iam.Group
+ 2, // 8: chainguard.platform.tenant.Cluster.provider:type_name -> chainguard.platform.tenant.Cluster.Provider
+ 3, // 9: chainguard.platform.tenant.Cluster.affinity:type_name -> chainguard.platform.tenant.Cluster.Location
+ 27, // 10: chainguard.platform.tenant.Cluster.info:type_name -> chainguard.platform.tenant.Cluster.Info
+ 28, // 11: chainguard.platform.tenant.Cluster.auth_info:type_name -> chainguard.platform.tenant.Cluster.AuthInfo
+ 29, // 12: chainguard.platform.tenant.Cluster.status:type_name -> chainguard.platform.tenant.Cluster.Status
+ 26, // 13: chainguard.platform.tenant.Cluster.enforcer_options:type_name -> chainguard.platform.tenant.Cluster.EnforcerOptions
+ 32, // 14: chainguard.platform.tenant.ClusterActivity.last_seen:type_name -> google.protobuf.Timestamp
+ 10, // 15: chainguard.platform.tenant.ClusterList.items:type_name -> chainguard.platform.tenant.Cluster
+ 32, // 16: chainguard.platform.tenant.ClusterFilter.active_since:type_name -> google.protobuf.Timestamp
+ 34, // 17: chainguard.platform.tenant.ClusterFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 30, // 18: chainguard.platform.tenant.ClusterProfilesResponse.profile:type_name -> chainguard.platform.tenant.ClusterProfilesResponse.Profile
+ 31, // 19: chainguard.platform.tenant.ClusterConfigRequest.enforcer_options:type_name -> chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions
+ 2, // 20: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.provider:type_name -> chainguard.platform.tenant.Cluster.Provider
+ 3, // 21: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.location:type_name -> chainguard.platform.tenant.Cluster.Location
+ 21, // 22: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.unsupported:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Unsupported
+ 22, // 23: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.needs_work:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.NeedsWork
+ 23, // 24: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.eligible:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible
+ 24, // 25: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.enrolled:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled
+ 27, // 26: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible.info:type_name -> chainguard.platform.tenant.Cluster.Info
+ 27, // 27: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled.info:type_name -> chainguard.platform.tenant.Cluster.Info
+ 11, // 28: chainguard.platform.tenant.Cluster.ActivityEntry.value:type_name -> chainguard.platform.tenant.ClusterActivity
+ 1, // 29: chainguard.platform.tenant.Cluster.EnforcerOptions.namespace_enforcement_mode:type_name -> chainguard.platform.tenant.Cluster.NamespaceEnforcementMode
+ 4, // 30: chainguard.platform.tenant.Cluster.Status.ready:type_name -> chainguard.platform.tenant.Cluster.Status.State
+ 5, // 31: chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions.namespace_enforcement_mode:type_name -> chainguard.platform.tenant.ClusterConfigRequest.NamespaceEnforcementMode
+ 6, // 32: chainguard.platform.tenant.Clusters.Create:input_type -> chainguard.platform.tenant.CreateClusterRequest
+ 7, // 33: chainguard.platform.tenant.Clusters.Delete:input_type -> chainguard.platform.tenant.DeleteClusterRequest
+ 8, // 34: chainguard.platform.tenant.Clusters.Discover:input_type -> chainguard.platform.tenant.ClusterDiscoveryRequest
+ 13, // 35: chainguard.platform.tenant.Clusters.List:input_type -> chainguard.platform.tenant.ClusterFilter
+ 10, // 36: chainguard.platform.tenant.Clusters.Update:input_type -> chainguard.platform.tenant.Cluster
+ 14, // 37: chainguard.platform.tenant.Clusters.Profiles:input_type -> chainguard.platform.tenant.ClusterProfilesRequest
+ 16, // 38: chainguard.platform.tenant.Clusters.Config:input_type -> chainguard.platform.tenant.ClusterConfigRequest
+ 18, // 39: chainguard.platform.tenant.Clusters.CIDR:input_type -> chainguard.platform.tenant.ClusterCIDRRequest
+ 10, // 40: chainguard.platform.tenant.Clusters.Create:output_type -> chainguard.platform.tenant.Cluster
+ 35, // 41: chainguard.platform.tenant.Clusters.Delete:output_type -> google.protobuf.Empty
+ 9, // 42: chainguard.platform.tenant.Clusters.Discover:output_type -> chainguard.platform.tenant.ClusterDiscoveryResponse
+ 12, // 43: chainguard.platform.tenant.Clusters.List:output_type -> chainguard.platform.tenant.ClusterList
+ 10, // 44: chainguard.platform.tenant.Clusters.Update:output_type -> chainguard.platform.tenant.Cluster
+ 15, // 45: chainguard.platform.tenant.Clusters.Profiles:output_type -> chainguard.platform.tenant.ClusterProfilesResponse
+ 17, // 46: chainguard.platform.tenant.Clusters.Config:output_type -> chainguard.platform.tenant.ClusterConfigResponse
+ 19, // 47: chainguard.platform.tenant.Clusters.CIDR:output_type -> chainguard.platform.tenant.ClusterCIDRResponse
+ 40, // [40:48] is the sub-list for method output_type
+ 32, // [32:40] is the sub-list for method input_type
+ 32, // [32:32] is the sub-list for extension type_name
+ 32, // [32:32] is the sub-list for extension extendee
+ 0, // [0:32] is the sub-list for field type_name
+}
+
+func init() { file_cluster_platform_proto_init() }
+func file_cluster_platform_proto_init() {
+ if File_cluster_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_cluster_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateClusterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteClusterRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Cluster); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterActivity); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterProfilesRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterProfilesResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterConfigRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterConfigResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterCIDRRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterCIDRResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse_Result); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse_Result_Unsupported); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse_Result_NeedsWork); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse_Result_Eligible); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterDiscoveryResponse_Result_Enrolled); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Cluster_EnforcerOptions); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Cluster_Info); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Cluster_AuthInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Cluster_Status); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterProfilesResponse_Profile); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_cluster_platform_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ClusterConfigRequest_EnforcerOptions); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_cluster_platform_proto_msgTypes[4].OneofWrappers = []interface{}{}
+ file_cluster_platform_proto_msgTypes[10].OneofWrappers = []interface{}{}
+ file_cluster_platform_proto_msgTypes[14].OneofWrappers = []interface{}{
+ (*ClusterDiscoveryResponse_Result_Unsupported_)(nil),
+ (*ClusterDiscoveryResponse_Result_NeedsWork_)(nil),
+ (*ClusterDiscoveryResponse_Result_Eligible_)(nil),
+ (*ClusterDiscoveryResponse_Result_Enrolled_)(nil),
+ }
+ file_cluster_platform_proto_msgTypes[20].OneofWrappers = []interface{}{}
+ file_cluster_platform_proto_msgTypes[25].OneofWrappers = []interface{}{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_cluster_platform_proto_rawDesc,
+ NumEnums: 6,
+ NumMessages: 26,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_cluster_platform_proto_goTypes,
+ DependencyIndexes: file_cluster_platform_proto_depIdxs,
+ EnumInfos: file_cluster_platform_proto_enumTypes,
+ MessageInfos: file_cluster_platform_proto_msgTypes,
+ }.Build()
+ File_cluster_platform_proto = out.File
+ file_cluster_platform_proto_rawDesc = nil
+ file_cluster_platform_proto_goTypes = nil
+ file_cluster_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.gw.go b/proto/platform/tenant/v1/cluster.platform.pb.gw.go
new file mode 100644
index 00000000..4355e0ab
--- /dev/null
+++ b/proto/platform/tenant/v1/cluster.platform.pb.gw.go
@@ -0,0 +1,838 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: cluster.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Clusters_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateClusterRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Cluster); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Create_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq CreateClusterRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Cluster); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["parent_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
+ }
+
+ protoReq.ParentId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
+ }
+
+ msg, err := server.Create(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteClusterRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq DeleteClusterRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Delete(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_Discover_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterDiscoveryRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Discover(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Discover_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterDiscoveryRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Discover(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+var (
+ filter_Clusters_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Clusters_List_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Clusters_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_List_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Clusters_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_Update_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Cluster
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Update_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Cluster
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
+ }
+
+ protoReq.Id, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
+ }
+
+ msg, err := server.Update(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_Profiles_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterProfilesRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Profiles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Profiles_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterProfilesRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Profiles(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_Config_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterConfigRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Config(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_Config_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterConfigRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.Config(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+func request_Clusters_CIDR_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterCIDRRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.CIDR(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Clusters_CIDR_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ClusterCIDRRequest
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.CIDR(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterClustersHandlerServer registers the http handlers for service Clusters to "mux".
+// UnaryRPC :call ClustersServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterClustersHandlerFromEndpoint instead.
+func RegisterClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ClustersServer) error {
+
+ mux.Handle("POST", pattern_Clusters_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Create", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Create_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Clusters_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Delete", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Discover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Discover", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Discover_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Discover_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Clusters_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Clusters_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Update", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Update_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Profiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Profiles", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Profiles"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Profiles_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Profiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Config_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Config", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Config"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_Config_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Config_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_CIDR_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/CIDR", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/CIDR"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Clusters_CIDR_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_CIDR_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterClustersHandlerFromEndpoint is same as RegisterClustersHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterClustersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterClustersHandler(ctx, mux, conn)
+}
+
+// RegisterClustersHandler registers the http handlers for service Clusters to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterClustersHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterClustersHandlerClient(ctx, mux, NewClustersClient(conn))
+}
+
+// RegisterClustersHandlerClient registers the http handlers for service Clusters
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ClustersClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ClustersClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "ClustersClient" to call the correct interceptors.
+func RegisterClustersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ClustersClient) error {
+
+ mux.Handle("POST", pattern_Clusters_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Create", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{parent_id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Create_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("DELETE", pattern_Clusters_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Delete", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Discover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Discover", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Discover_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Discover_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("GET", pattern_Clusters_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("PUT", pattern_Clusters_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Update", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Update_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Profiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Profiles", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Profiles"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Profiles_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Profiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_Config_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Config", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Config"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_Config_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_Config_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Clusters_CIDR_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/CIDR", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/CIDR"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Clusters_CIDR_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Clusters_CIDR_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Clusters_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "parent_id"}, ""))
+
+ pattern_Clusters_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "id"}, ""))
+
+ pattern_Clusters_Discover_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "clusters"}, ""))
+
+ pattern_Clusters_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "clusters"}, ""))
+
+ pattern_Clusters_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "id"}, ""))
+
+ pattern_Clusters_Profiles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "Profiles"}, ""))
+
+ pattern_Clusters_Config_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "Config"}, ""))
+
+ pattern_Clusters_CIDR_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "CIDR"}, ""))
+)
+
+var (
+ forward_Clusters_Create_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_Delete_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_Discover_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_List_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_Update_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_Profiles_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_Config_0 = runtime.ForwardResponseMessage
+
+ forward_Clusters_CIDR_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/cluster.platform.proto b/proto/platform/tenant/v1/cluster.platform.proto
new file mode 100644
index 00000000..de125115
--- /dev/null
+++ b/proto/platform/tenant/v1/cluster.platform.proto
@@ -0,0 +1,479 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantClusterProto";
+
+package chainguard.platform.tenant;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "annotations/events.proto";
+import "platform/common/v1/uidp.platform.proto";
+import "platform/iam/v1/group.platform.proto";
+
+service Clusters {
+ rpc Create(CreateClusterRequest) returns (Cluster) {
+ option (google.api.http) = {
+ post: "/tenant/v1/clusters/{parent_id=**}"
+ body: "cluster"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ CAP_TENANT_CLUSTERS_CREATE,
+ // Creating a managed Cluster entails creating a RoleBinding
+ // for the cluster's identity, so check that the caller has
+ // permission to create RoleBindings as well.
+ CAP_IAM_ROLE_BINDINGS_CREATE
+ ]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.tenant.cluster.created.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Delete(DeleteClusterRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/tenant/v1/clusters/{id=**}"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_CLUSTERS_DELETE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.tenant.cluster.deleted.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Discover(ClusterDiscoveryRequest) returns (ClusterDiscoveryResponse) {
+ option (google.api.http) = {
+ post: "/tenant/v1/clusters"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [
+ // This API is used to discover all of the clusters accessible
+ // to the IAM roles associated with the group specified in the
+ // request, use this special capability to cover this permission.
+ CAP_TENANT_CLUSTERS_DISCOVER,
+ // As part of the discovery response we return "enrolled"
+ // clusters, so check the List capability.
+ CAP_TENANT_CLUSTERS_LIST
+ ]
+ }
+ };
+ }
+
+ rpc List(ClusterFilter) returns (ClusterList) {
+ option (google.api.http) = {
+ get: "/tenant/v1/clusters"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_CLUSTERS_LIST]
+ unscoped: true
+ }
+ };
+ }
+
+ rpc Update(Cluster) returns (Cluster) {
+ option (google.api.http) = {
+ put: "/tenant/v1/clusters/{id=**}"
+ body: "*"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_CLUSTERS_UPDATE]
+ }
+ };
+ option (chainguard.annotations.events) = {
+ type: "dev.chainguard.api.tenant.cluster.updated.v1"
+ extensions: ["group"]
+ audience: CUSTOMER
+ };
+ }
+
+ rpc Profiles(ClusterProfilesRequest) returns (ClusterProfilesResponse) {
+ option (chainguard.annotations.iam) = {
+ // Just check that the caller is registered.
+ enabled: {}
+ };
+ }
+
+ rpc Config(ClusterConfigRequest) returns (ClusterConfigResponse) {
+ option (chainguard.annotations.iam) = {
+ // Just check that the caller is registered.
+ enabled: {}
+ };
+ }
+
+ rpc CIDR(ClusterCIDRRequest) returns (ClusterCIDRResponse) {
+ option (chainguard.annotations.iam) = {
+ // Just check that the caller is registered.
+ enabled: {}
+ };
+ }
+}
+
+message CreateClusterRequest {
+ // parent_id, The Group under which this Cluster resides.
+ string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // Cluster is the definition of the managed cluster to create.
+ Cluster cluster = 2;
+}
+
+message DeleteClusterRequest {
+ // id is the exact UIDP of the record.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+}
+
+message ClusterDiscoveryRequest {
+ // id is the exact UIDP of the group to impersonate to search for clusters.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // providers is the list of providers to perform discovery on.
+ repeated Cluster.Provider providers = 2;
+
+ // profiles includes the set of profiles to perform discovery for,
+ // which may impact eligibility (some profiles may not be supported
+ // on some providers).
+ repeated string profiles = 3;
+
+ // states is a collection of the states to return, or all if
+ // none are specified.
+ repeated State states = 4;
+
+ enum State {
+ UNKNOWN = 0;
+ UNSUPPORTED = 1;
+ NEEDS_WORK = 2;
+ ELIGIBLE = 3;
+ ENROLLED = 4;
+ }
+}
+
+message ClusterDiscoveryResponse {
+ repeated Result results = 1;
+
+ message Result {
+ Cluster.Provider provider = 1;
+ string account = 2;
+ Cluster.Location location = 3;
+ string name = 4;
+
+ oneof state {
+ // unsupported clusters cannot be enrolled with our
+ // Agentless cluster support.
+ Unsupported unsupported = 10;
+
+ // needs_work clusters can be modified in some way so
+ // that they are supported by our Agentless infrastructure.
+ NeedsWork needs_work = 11;
+
+ // eligible clusters are able to be directly enrolled as
+ // agentless tenants immediately. This message contains
+ // all of the information needed to enroll this cluster.
+ Eligible eligible = 12;
+
+ // enrolled clusters are clusters that have already been
+ // enrolled as agentless tenants.
+ Enrolled enrolled = 13;
+ }
+
+ message Unsupported {
+ // reason holds the reason the cluster is not currently supported.
+ string reason = 1;
+ }
+
+ message NeedsWork {
+ // steps holds the set of changes the user needs to make in order
+ // for the cluster to become eligible.
+ repeated string steps = 1;
+ }
+
+ message Eligible {
+ chainguard.platform.tenant.Cluster.Info info = 1;
+ }
+
+ message Enrolled {
+ // id is the UIDP of the tenant Cluster.
+ string id = 1;
+
+ // profiles contains the set of profiles that this
+ // cluster was enrolled with.
+ repeated string profiles = 2;
+
+ chainguard.platform.tenant.Cluster.Info info = 3;
+ }
+ }
+}
+
+message Cluster {
+ // id, The Cluster UIDP under which this Cluster resides.
+ string id = 1 [(chainguard.annotations.iam_scope) = true];
+
+ // remote_id is the remote ID of this cluster.
+ string remote_id = 2;
+
+ // issuer is the identity issuer tied to this cluster.
+ string issuer = 3;
+
+ // registered tracks the timestamp at which this cluster was registered.
+ google.protobuf.Timestamp registered = 4;
+
+ // last_seen tracks the timestamp at which this cluster was last seen.
+ google.protobuf.Timestamp last_seen = 5;
+
+ // version holds the Kubernetes version last reported by the cluster.
+ string version = 6;
+
+ // agent_version holds the version of the Chainguard agent last reported by the cluster.
+ string agent_version = 7;
+
+ // activity is a mapping from "Source" URLs to an activity record summarizing
+ // recent activity from this source.
+ map activity = 8;
+
+ // name of the cluster.
+ string name = 9;
+
+ // a short description of this cluster.
+ string description = 10;
+
+ // group the cluster resides in
+ chainguard.platform.iam.Group group = 99;
+
+ /////////////////////////////////////////////
+ // Group "managed" options starting at 100 //
+ /////////////////////////////////////////////
+
+ // managed_name is the unique name we have given to this cluster's managed agent.
+ // This field is output-only, and is populated only when this cluster is "managed".
+ string managed_name = 100;
+
+ // provider holds the flavor of cluster provider, which is used to determine how we
+ // authenticate with the cluster.
+ Provider provider = 101;
+
+ // affinity specifies a scheduling preference for where to run the managed agent.
+ // Other factors, such as the provider may be taken into account when choosing a
+ // host cluster.
+ Location affinity = 105;
+
+ // info contains the cluster information from the kubeconfig context.
+ Info info = 102;
+
+ // auth_info holds authentication details for connecting to KinD in test scenarios.
+ AuthInfo auth_info = 104;
+
+ // status contains the managed cluster's status.
+ Status status = 103;
+
+ // host_cluster surfaces the opaque identifier for the Chainguard cluster hosting
+ // this agent.
+ string host_cluster = 106;
+
+ // profiles specifies the root set of tenant configurations that we want to run
+ // on this cluster.
+ repeated string profiles = 107;
+
+ // EnforcerOptions contains additional Enforcer configuration settings.
+ // +optional
+ optional EnforcerOptions enforcer_options = 108;
+
+ message EnforcerOptions {
+ // +optional
+ optional bool webhook_fail_open = 1;
+ // +optional
+ optional bool enable_cip_cache = 2;
+ // +optional
+ optional NamespaceEnforcementMode namespace_enforcement_mode = 3;
+ }
+
+ enum NamespaceEnforcementMode {
+ OptOut = 0;
+ OptIn = 1;
+ }
+
+ enum Provider {
+ UNKNOWN = 0;
+ GKE = 1;
+ EKS = 2;
+
+ // GCP Services (10+)
+ CLOUD_RUN = 10;
+
+ // AWS Services (20+)
+ ECS = 20;
+ APP_RUNNER = 21;
+
+ // For testing.
+ KIND = 100;
+ }
+
+ enum Location {
+ AUTO = 0;
+
+ // Use 1xx for US
+ US_EAST = 101;
+ US_CENTRAL = 102;
+ US_WEST = 103;
+
+ // TODO: Segment up other areas
+ }
+
+ // This is based off of k8s.io/client-go/tools/clientcmd/api/v1.Cluster
+ // This can be extracted from kubectl for a named cluster (replace CLUSTER_NAME) with:
+ // kubectl config view \
+ // --flatten -o jsonpath='{.clusters[?(@.name == "CLUSTER_NAME")].cluster}'
+ message Info {
+ // Server is the address of the kubernetes cluster (https://hostname:port).
+ string server = 1;
+
+ // TODO: TLSServerName = 2;
+
+ // TODO: InsecureSkipTLSVerify = 3;
+
+ // TODO: CertificateAuthority = 4;
+
+ // CertificateAuthorityData contains PEM-encoded certificate authority certificates.
+ // Overrides CertificateAuthority
+ bytes CertificateAuthorityData = 5;
+
+ // TODO: ProxyURL = 6;
+
+ // TODO: Extensions = 7;
+ }
+
+ // This is based off of k8s.io/client-go/tools/clientcmd/api/v1.AuthInfo
+ // This should only ever be used with KinD clusters during testing, it WILL
+ // NOT be stored securely.
+ message AuthInfo {
+ // client_certificate_data contains PEM-encoded data from a client cert file for TLS.
+ bytes client_certificate_data = 2;
+
+ // client_key_data contains PEM-encoded data from a client key file for TLS.
+ bytes client_key_data = 4;
+ }
+
+ message Status {
+ enum State {
+ UNKNOWN = 0;
+ Ready = 1;
+ NotReady = 2;
+ }
+
+ State ready = 1;
+ string reason = 2;
+ string message = 3;
+ }
+}
+
+message ClusterActivity {
+ // profile is the Chainguard profile to which the source of this activity belongs.
+ string profile = 6;
+
+ // namespace is the namespace in which the source of this cluster activity lives.
+ string namespace = 1;
+
+ // controller_name is the name of the Controller CRD which was the source of this
+ // activity on the tenant cluster.
+ string controller_name = 2;
+
+ // webhook_name is the name of the Webhook CRD which was the source of this
+ // activity on the tenant cluster.
+ string webhook_name = 3;
+
+ // spec_hash is the hash of the Controller or Webhook CRD's spec, which forms a
+ // loose form of versioning.
+ string spec_hash = 4;
+
+ // last_seen tracks the timestamp at which this source was last active.
+ google.protobuf.Timestamp last_seen = 5;
+}
+
+message ClusterList {
+ repeated Cluster items = 1;
+}
+
+message ClusterFilter {
+ // id is the exact UID of the record.
+ string id = 1;
+
+ // active_since is the timestamp after which returned clusters should have been active.
+ // This applies to both cluster registration and when it was "last seen".
+ google.protobuf.Timestamp active_since = 2;
+
+ // uidp filers records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 3;
+
+ // remote_id is the remote ID of this cluster.
+ string remote_id = 4;
+
+ // name is the exact name of the cluster.
+ string name = 5;
+}
+
+message ClusterProfilesRequest {}
+
+message ClusterProfilesResponse {
+ repeated Profile profile = 1;
+
+ message Profile {
+ string name = 1;
+ string description = 2;
+
+ repeated string dependencies = 3;
+ }
+}
+
+message ClusterConfigRequest {
+ // profiles specifies the root profiles we want as part of this configuration.
+ repeated string profiles = 1;
+
+ // EnforcerOptions contains additional Enforcer configuration settings.
+ optional EnforcerOptions enforcer_options = 2;
+
+ message EnforcerOptions {
+ // +optional
+ optional bool webhook_fail_open = 1;
+ // +optional
+ optional bool enable_cip_cache = 2;
+ // +optional
+ optional NamespaceEnforcementMode namespace_enforcement_mode = 3;
+ }
+
+ enum NamespaceEnforcementMode {
+ OptOut = 0;
+ OptIn = 1;
+ }
+}
+
+message ClusterConfigResponse {
+ bytes mcp_config = 1;
+ bytes tenant_config = 2;
+
+ // profiles includes the full set of profiles returned (including transitive
+ // dependencies of the input profiles)
+ repeated string profiles = 3;
+}
+
+message ClusterCIDRRequest {
+}
+
+message ClusterCIDRResponse {
+ // cidr_blocks specifies the cidr blocks enforce uses to communicate with clusters.
+ repeated string cidr_blocks = 1;
+}
diff --git a/proto/platform/tenant/v1/cluster.platform_grpc.pb.go b/proto/platform/tenant/v1/cluster.platform_grpc.pb.go
new file mode 100644
index 00000000..75c55127
--- /dev/null
+++ b/proto/platform/tenant/v1/cluster.platform_grpc.pb.go
@@ -0,0 +1,369 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: cluster.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Clusters_Create_FullMethodName = "/chainguard.platform.tenant.Clusters/Create"
+ Clusters_Delete_FullMethodName = "/chainguard.platform.tenant.Clusters/Delete"
+ Clusters_Discover_FullMethodName = "/chainguard.platform.tenant.Clusters/Discover"
+ Clusters_List_FullMethodName = "/chainguard.platform.tenant.Clusters/List"
+ Clusters_Update_FullMethodName = "/chainguard.platform.tenant.Clusters/Update"
+ Clusters_Profiles_FullMethodName = "/chainguard.platform.tenant.Clusters/Profiles"
+ Clusters_Config_FullMethodName = "/chainguard.platform.tenant.Clusters/Config"
+ Clusters_CIDR_FullMethodName = "/chainguard.platform.tenant.Clusters/CIDR"
+)
+
+// ClustersClient is the client API for Clusters service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type ClustersClient interface {
+ Create(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error)
+ Delete(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Discover(ctx context.Context, in *ClusterDiscoveryRequest, opts ...grpc.CallOption) (*ClusterDiscoveryResponse, error)
+ List(ctx context.Context, in *ClusterFilter, opts ...grpc.CallOption) (*ClusterList, error)
+ Update(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error)
+ Profiles(ctx context.Context, in *ClusterProfilesRequest, opts ...grpc.CallOption) (*ClusterProfilesResponse, error)
+ Config(ctx context.Context, in *ClusterConfigRequest, opts ...grpc.CallOption) (*ClusterConfigResponse, error)
+ CIDR(ctx context.Context, in *ClusterCIDRRequest, opts ...grpc.CallOption) (*ClusterCIDRResponse, error)
+}
+
+type clustersClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewClustersClient(cc grpc.ClientConnInterface) ClustersClient {
+ return &clustersClient{cc}
+}
+
+func (c *clustersClient) Create(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error) {
+ out := new(Cluster)
+ err := c.cc.Invoke(ctx, Clusters_Create_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) Delete(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Clusters_Delete_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) Discover(ctx context.Context, in *ClusterDiscoveryRequest, opts ...grpc.CallOption) (*ClusterDiscoveryResponse, error) {
+ out := new(ClusterDiscoveryResponse)
+ err := c.cc.Invoke(ctx, Clusters_Discover_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) List(ctx context.Context, in *ClusterFilter, opts ...grpc.CallOption) (*ClusterList, error) {
+ out := new(ClusterList)
+ err := c.cc.Invoke(ctx, Clusters_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) Update(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) {
+ out := new(Cluster)
+ err := c.cc.Invoke(ctx, Clusters_Update_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) Profiles(ctx context.Context, in *ClusterProfilesRequest, opts ...grpc.CallOption) (*ClusterProfilesResponse, error) {
+ out := new(ClusterProfilesResponse)
+ err := c.cc.Invoke(ctx, Clusters_Profiles_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) Config(ctx context.Context, in *ClusterConfigRequest, opts ...grpc.CallOption) (*ClusterConfigResponse, error) {
+ out := new(ClusterConfigResponse)
+ err := c.cc.Invoke(ctx, Clusters_Config_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *clustersClient) CIDR(ctx context.Context, in *ClusterCIDRRequest, opts ...grpc.CallOption) (*ClusterCIDRResponse, error) {
+ out := new(ClusterCIDRResponse)
+ err := c.cc.Invoke(ctx, Clusters_CIDR_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// ClustersServer is the server API for Clusters service.
+// All implementations must embed UnimplementedClustersServer
+// for forward compatibility
+type ClustersServer interface {
+ Create(context.Context, *CreateClusterRequest) (*Cluster, error)
+ Delete(context.Context, *DeleteClusterRequest) (*emptypb.Empty, error)
+ Discover(context.Context, *ClusterDiscoveryRequest) (*ClusterDiscoveryResponse, error)
+ List(context.Context, *ClusterFilter) (*ClusterList, error)
+ Update(context.Context, *Cluster) (*Cluster, error)
+ Profiles(context.Context, *ClusterProfilesRequest) (*ClusterProfilesResponse, error)
+ Config(context.Context, *ClusterConfigRequest) (*ClusterConfigResponse, error)
+ CIDR(context.Context, *ClusterCIDRRequest) (*ClusterCIDRResponse, error)
+ mustEmbedUnimplementedClustersServer()
+}
+
+// UnimplementedClustersServer must be embedded to have forward compatible implementations.
+type UnimplementedClustersServer struct {
+}
+
+func (UnimplementedClustersServer) Create(context.Context, *CreateClusterRequest) (*Cluster, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
+}
+func (UnimplementedClustersServer) Delete(context.Context, *DeleteClusterRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
+}
+func (UnimplementedClustersServer) Discover(context.Context, *ClusterDiscoveryRequest) (*ClusterDiscoveryResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Discover not implemented")
+}
+func (UnimplementedClustersServer) List(context.Context, *ClusterFilter) (*ClusterList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedClustersServer) Update(context.Context, *Cluster) (*Cluster, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
+}
+func (UnimplementedClustersServer) Profiles(context.Context, *ClusterProfilesRequest) (*ClusterProfilesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Profiles not implemented")
+}
+func (UnimplementedClustersServer) Config(context.Context, *ClusterConfigRequest) (*ClusterConfigResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Config not implemented")
+}
+func (UnimplementedClustersServer) CIDR(context.Context, *ClusterCIDRRequest) (*ClusterCIDRResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CIDR not implemented")
+}
+func (UnimplementedClustersServer) mustEmbedUnimplementedClustersServer() {}
+
+// UnsafeClustersServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ClustersServer will
+// result in compilation errors.
+type UnsafeClustersServer interface {
+ mustEmbedUnimplementedClustersServer()
+}
+
+func RegisterClustersServer(s grpc.ServiceRegistrar, srv ClustersServer) {
+ s.RegisterService(&Clusters_ServiceDesc, srv)
+}
+
+func _Clusters_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateClusterRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Create(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Create_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Create(ctx, req.(*CreateClusterRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeleteClusterRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Delete(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Delete_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Delete(ctx, req.(*DeleteClusterRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_Discover_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ClusterDiscoveryRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Discover(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Discover_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Discover(ctx, req.(*ClusterDiscoveryRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ClusterFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).List(ctx, req.(*ClusterFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Cluster)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Update(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Update_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Update(ctx, req.(*Cluster))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_Profiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ClusterProfilesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Profiles(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Profiles_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Profiles(ctx, req.(*ClusterProfilesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ClusterConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).Config(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_Config_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).Config(ctx, req.(*ClusterConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Clusters_CIDR_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ClusterCIDRRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClustersServer).CIDR(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Clusters_CIDR_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClustersServer).CIDR(ctx, req.(*ClusterCIDRRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Clusters_ServiceDesc is the grpc.ServiceDesc for Clusters service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Clusters_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Clusters",
+ HandlerType: (*ClustersServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Create",
+ Handler: _Clusters_Create_Handler,
+ },
+ {
+ MethodName: "Delete",
+ Handler: _Clusters_Delete_Handler,
+ },
+ {
+ MethodName: "Discover",
+ Handler: _Clusters_Discover_Handler,
+ },
+ {
+ MethodName: "List",
+ Handler: _Clusters_List_Handler,
+ },
+ {
+ MethodName: "Update",
+ Handler: _Clusters_Update_Handler,
+ },
+ {
+ MethodName: "Profiles",
+ Handler: _Clusters_Profiles_Handler,
+ },
+ {
+ MethodName: "Config",
+ Handler: _Clusters_Config_Handler,
+ },
+ {
+ MethodName: "CIDR",
+ Handler: _Clusters_CIDR_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "cluster.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/context.platform.pb.go b/proto/platform/tenant/v1/context.platform.pb.go
new file mode 100644
index 00000000..e909684b
--- /dev/null
+++ b/proto/platform/tenant/v1/context.platform.pb.go
@@ -0,0 +1,876 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: context.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type RecordContext_Ancestry_Role int32
+
+const (
+ RecordContext_Ancestry_UNKNOWN RecordContext_Ancestry_Role = 0
+ RecordContext_Ancestry_BASE RecordContext_Ancestry_Role = 1
+ RecordContext_Ancestry_DERIVED RecordContext_Ancestry_Role = 2
+)
+
+// Enum value maps for RecordContext_Ancestry_Role.
+var (
+ RecordContext_Ancestry_Role_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "BASE",
+ 2: "DERIVED",
+ }
+ RecordContext_Ancestry_Role_value = map[string]int32{
+ "UNKNOWN": 0,
+ "BASE": 1,
+ "DERIVED": 2,
+ }
+)
+
+func (x RecordContext_Ancestry_Role) Enum() *RecordContext_Ancestry_Role {
+ p := new(RecordContext_Ancestry_Role)
+ *p = x
+ return p
+}
+
+func (x RecordContext_Ancestry_Role) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (RecordContext_Ancestry_Role) Descriptor() protoreflect.EnumDescriptor {
+ return file_context_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (RecordContext_Ancestry_Role) Type() protoreflect.EnumType {
+ return &file_context_platform_proto_enumTypes[0]
+}
+
+func (x RecordContext_Ancestry_Role) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RecordContext_Ancestry_Role.Descriptor instead.
+func (RecordContext_Ancestry_Role) EnumDescriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0, 1, 0}
+}
+
+type RecordContext_Variant_Role int32
+
+const (
+ RecordContext_Variant_UNKNOWN RecordContext_Variant_Role = 0
+ RecordContext_Variant_INDEX RecordContext_Variant_Role = 1
+ RecordContext_Variant_VARIANT RecordContext_Variant_Role = 2
+)
+
+// Enum value maps for RecordContext_Variant_Role.
+var (
+ RecordContext_Variant_Role_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "INDEX",
+ 2: "VARIANT",
+ }
+ RecordContext_Variant_Role_value = map[string]int32{
+ "UNKNOWN": 0,
+ "INDEX": 1,
+ "VARIANT": 2,
+ }
+)
+
+func (x RecordContext_Variant_Role) Enum() *RecordContext_Variant_Role {
+ p := new(RecordContext_Variant_Role)
+ *p = x
+ return p
+}
+
+func (x RecordContext_Variant_Role) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (RecordContext_Variant_Role) Descriptor() protoreflect.EnumDescriptor {
+ return file_context_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (RecordContext_Variant_Role) Type() protoreflect.EnumType {
+ return &file_context_platform_proto_enumTypes[1]
+}
+
+func (x RecordContext_Variant_Role) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RecordContext_Variant_Role.Descriptor instead.
+func (RecordContext_Variant_Role) EnumDescriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0, 2, 0}
+}
+
+type RecordContext struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The RecordContext UIDP at which this RecordContext resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the RecordContext.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this RecordContext.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // last_seen tracks the timestamp at which this RecordContext was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // Types that are assignable to Kind:
+ //
+ // *RecordContext_Workload_
+ // *RecordContext_Ancestry_
+ // *RecordContext_Variant_
+ Kind isRecordContext_Kind `protobuf_oneof:"kind"`
+}
+
+func (x *RecordContext) Reset() {
+ *x = RecordContext{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContext) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContext) ProtoMessage() {}
+
+func (x *RecordContext) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContext.ProtoReflect.Descriptor instead.
+func (*RecordContext) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *RecordContext) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RecordContext) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *RecordContext) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *RecordContext) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (m *RecordContext) GetKind() isRecordContext_Kind {
+ if m != nil {
+ return m.Kind
+ }
+ return nil
+}
+
+func (x *RecordContext) GetWorkload() *RecordContext_Workload {
+ if x, ok := x.GetKind().(*RecordContext_Workload_); ok {
+ return x.Workload
+ }
+ return nil
+}
+
+func (x *RecordContext) GetAncestry() *RecordContext_Ancestry {
+ if x, ok := x.GetKind().(*RecordContext_Ancestry_); ok {
+ return x.Ancestry
+ }
+ return nil
+}
+
+func (x *RecordContext) GetVariant() *RecordContext_Variant {
+ if x, ok := x.GetKind().(*RecordContext_Variant_); ok {
+ return x.Variant
+ }
+ return nil
+}
+
+type isRecordContext_Kind interface {
+ isRecordContext_Kind()
+}
+
+type RecordContext_Workload_ struct {
+ Workload *RecordContext_Workload `protobuf:"bytes,100,opt,name=workload,proto3,oneof"`
+}
+
+type RecordContext_Ancestry_ struct {
+ Ancestry *RecordContext_Ancestry `protobuf:"bytes,101,opt,name=ancestry,proto3,oneof"`
+}
+
+type RecordContext_Variant_ struct {
+ Variant *RecordContext_Variant `protobuf:"bytes,102,opt,name=variant,proto3,oneof"`
+}
+
+func (*RecordContext_Workload_) isRecordContext_Kind() {}
+
+func (*RecordContext_Ancestry_) isRecordContext_Kind() {}
+
+func (*RecordContext_Variant_) isRecordContext_Kind() {}
+
+type RecordContextList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*RecordContext `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RecordContextList) Reset() {
+ *x = RecordContextList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContextList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContextList) ProtoMessage() {}
+
+func (x *RecordContextList) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContextList.ProtoReflect.Descriptor instead.
+func (*RecordContextList) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RecordContextList) GetItems() []*RecordContext {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type RecordContextFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // Allow filtering results based on matching fields in the context
+ // ranging from just a particular "kind" to the exact workload shape.
+ // Only specified fields will be used as part of the match.
+ //
+ // Types that are assignable to Kind:
+ //
+ // *RecordContextFilter_Workload
+ // *RecordContextFilter_Ancestry
+ // *RecordContextFilter_Variant
+ Kind isRecordContextFilter_Kind `protobuf_oneof:"kind"`
+}
+
+func (x *RecordContextFilter) Reset() {
+ *x = RecordContextFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContextFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContextFilter) ProtoMessage() {}
+
+func (x *RecordContextFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContextFilter.ProtoReflect.Descriptor instead.
+func (*RecordContextFilter) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *RecordContextFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *RecordContextFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (m *RecordContextFilter) GetKind() isRecordContextFilter_Kind {
+ if m != nil {
+ return m.Kind
+ }
+ return nil
+}
+
+func (x *RecordContextFilter) GetWorkload() *RecordContext_Workload {
+ if x, ok := x.GetKind().(*RecordContextFilter_Workload); ok {
+ return x.Workload
+ }
+ return nil
+}
+
+func (x *RecordContextFilter) GetAncestry() *RecordContext_Ancestry {
+ if x, ok := x.GetKind().(*RecordContextFilter_Ancestry); ok {
+ return x.Ancestry
+ }
+ return nil
+}
+
+func (x *RecordContextFilter) GetVariant() *RecordContext_Variant {
+ if x, ok := x.GetKind().(*RecordContextFilter_Variant); ok {
+ return x.Variant
+ }
+ return nil
+}
+
+type isRecordContextFilter_Kind interface {
+ isRecordContextFilter_Kind()
+}
+
+type RecordContextFilter_Workload struct {
+ Workload *RecordContext_Workload `protobuf:"bytes,100,opt,name=workload,proto3,oneof"`
+}
+
+type RecordContextFilter_Ancestry struct {
+ Ancestry *RecordContext_Ancestry `protobuf:"bytes,101,opt,name=ancestry,proto3,oneof"`
+}
+
+type RecordContextFilter_Variant struct {
+ Variant *RecordContext_Variant `protobuf:"bytes,102,opt,name=variant,proto3,oneof"`
+}
+
+func (*RecordContextFilter_Workload) isRecordContextFilter_Kind() {}
+
+func (*RecordContextFilter_Ancestry) isRecordContextFilter_Kind() {}
+
+func (*RecordContextFilter_Variant) isRecordContextFilter_Kind() {}
+
+// Workload contexts are added to existence records that have been
+// observed running on a cluster.
+type RecordContext_Workload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // remote_id is the metadata.uid of the workload in which this
+ // container was observed.
+ RemoteId string `protobuf:"bytes,1,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+}
+
+func (x *RecordContext_Workload) Reset() {
+ *x = RecordContext_Workload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContext_Workload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContext_Workload) ProtoMessage() {}
+
+func (x *RecordContext_Workload) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContext_Workload.ProtoReflect.Descriptor instead.
+func (*RecordContext_Workload) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *RecordContext_Workload) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+// Ancestry relationships are added to records when a "base image"
+// relationship has been uncovered. This context is added to BOTH
+// records with their respective roles. The base image will get
+// the Role BASE, and the derivative image will get the Role DERIVED.
+type RecordContext_Ancestry struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Role RecordContext_Ancestry_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.RecordContext_Ancestry_Role" json:"role,omitempty"`
+ // image_id holds the digest of the related image, which can be used
+ // to efficiently retrieve it's record.
+ ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"`
+}
+
+func (x *RecordContext_Ancestry) Reset() {
+ *x = RecordContext_Ancestry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContext_Ancestry) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContext_Ancestry) ProtoMessage() {}
+
+func (x *RecordContext_Ancestry) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContext_Ancestry.ProtoReflect.Descriptor instead.
+func (*RecordContext_Ancestry) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *RecordContext_Ancestry) GetRole() RecordContext_Ancestry_Role {
+ if x != nil {
+ return x.Role
+ }
+ return RecordContext_Ancestry_UNKNOWN
+}
+
+func (x *RecordContext_Ancestry) GetImageId() string {
+ if x != nil {
+ return x.ImageId
+ }
+ return ""
+}
+
+// Variant relationships are added to records when we find an "index"
+// containing multiple different variations (typically os/arch) of the
+// same logical image. These are referred to as "OCI Image Index",
+// "Docker Manifest List", and occasionally "fat images". This context
+// is added to ALL records including the INDEX and all VARIANTs of that
+// index. The INDEX will typically contain N contexts carrying the Role
+// INDEX, the id of the VARIANT's record, and the version information
+// that discriminates that VARIANT from other VARIANTs. The VARIANT
+// will typically (but not always!) contain 1 context carrying the Role
+// VARIANT, the id of the INDEX's record, and the version information
+// that discriminates it among the other VARIANTs in the INDEX.
+type RecordContext_Variant struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Role RecordContext_Variant_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.RecordContext_Variant_Role" json:"role,omitempty"`
+ // image_id holds the digest of the related image, which can be used
+ // to efficiently retrieve it's record.
+ ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"`
+ // The version information distinguishing this variant
+ // from other possible variants of the index.
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *RecordContext_Variant) Reset() {
+ *x = RecordContext_Variant{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_context_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordContext_Variant) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordContext_Variant) ProtoMessage() {}
+
+func (x *RecordContext_Variant) ProtoReflect() protoreflect.Message {
+ mi := &file_context_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordContext_Variant.ProtoReflect.Descriptor instead.
+func (*RecordContext_Variant) Descriptor() ([]byte, []int) {
+ return file_context_platform_proto_rawDescGZIP(), []int{0, 2}
+}
+
+func (x *RecordContext_Variant) GetRole() RecordContext_Variant_Role {
+ if x != nil {
+ return x.Role
+ }
+ return RecordContext_Variant_UNKNOWN
+}
+
+func (x *RecordContext_Variant) GetImageId() string {
+ if x != nil {
+ return x.ImageId
+ }
+ return ""
+}
+
+func (x *RecordContext_Variant) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+var File_context_platform_proto protoreflect.FileDescriptor
+
+var file_context_platform_proto_rawDesc = []byte{
+ 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76,
+ 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x06, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+ 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a,
+ 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
+ 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x50, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
+ 0x61, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08,
+ 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65,
+ 0x73, 0x74, 0x72, 0x79, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f,
+ 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00,
+ 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x07, 0x76, 0x61,
+ 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x00,
+ 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x1a, 0x27, 0x0a, 0x08, 0x57, 0x6f, 0x72,
+ 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x49, 0x64, 0x1a, 0x9e, 0x01, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12,
+ 0x4b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12,
+ 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
+ 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45,
+ 0x44, 0x10, 0x02, 0x1a, 0xb7, 0x01, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12,
+ 0x4a, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x22, 0x2b, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
+ 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01,
+ 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x06, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x54, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x13,
+ 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
+ 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
+ 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x50,
+ 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x12, 0x50, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x18, 0x65, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e,
+ 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74,
+ 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x66, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56,
+ 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
+ 0x74, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x32, 0x88, 0x01, 0x0a, 0x0e, 0x52, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x76, 0x0a, 0x04,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
+ 0xe5, 0x04, 0x10, 0x01, 0x42, 0x78, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x20, 0x50,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x63,
+ 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
+ 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
+ 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_context_platform_proto_rawDescOnce sync.Once
+ file_context_platform_proto_rawDescData = file_context_platform_proto_rawDesc
+)
+
+func file_context_platform_proto_rawDescGZIP() []byte {
+ file_context_platform_proto_rawDescOnce.Do(func() {
+ file_context_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_context_platform_proto_rawDescData)
+ })
+ return file_context_platform_proto_rawDescData
+}
+
+var file_context_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_context_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_context_platform_proto_goTypes = []interface{}{
+ (RecordContext_Ancestry_Role)(0), // 0: chainguard.platform.tenant.RecordContext.Ancestry.Role
+ (RecordContext_Variant_Role)(0), // 1: chainguard.platform.tenant.RecordContext.Variant.Role
+ (*RecordContext)(nil), // 2: chainguard.platform.tenant.RecordContext
+ (*RecordContextList)(nil), // 3: chainguard.platform.tenant.RecordContextList
+ (*RecordContextFilter)(nil), // 4: chainguard.platform.tenant.RecordContextFilter
+ (*RecordContext_Workload)(nil), // 5: chainguard.platform.tenant.RecordContext.Workload
+ (*RecordContext_Ancestry)(nil), // 6: chainguard.platform.tenant.RecordContext.Ancestry
+ (*RecordContext_Variant)(nil), // 7: chainguard.platform.tenant.RecordContext.Variant
+ (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 9: chainguard.platform.common.UIDPFilter
+}
+var file_context_platform_proto_depIdxs = []int32{
+ 8, // 0: chainguard.platform.tenant.RecordContext.last_seen:type_name -> google.protobuf.Timestamp
+ 5, // 1: chainguard.platform.tenant.RecordContext.workload:type_name -> chainguard.platform.tenant.RecordContext.Workload
+ 6, // 2: chainguard.platform.tenant.RecordContext.ancestry:type_name -> chainguard.platform.tenant.RecordContext.Ancestry
+ 7, // 3: chainguard.platform.tenant.RecordContext.variant:type_name -> chainguard.platform.tenant.RecordContext.Variant
+ 2, // 4: chainguard.platform.tenant.RecordContextList.items:type_name -> chainguard.platform.tenant.RecordContext
+ 9, // 5: chainguard.platform.tenant.RecordContextFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 8, // 6: chainguard.platform.tenant.RecordContextFilter.active_since:type_name -> google.protobuf.Timestamp
+ 5, // 7: chainguard.platform.tenant.RecordContextFilter.workload:type_name -> chainguard.platform.tenant.RecordContext.Workload
+ 6, // 8: chainguard.platform.tenant.RecordContextFilter.ancestry:type_name -> chainguard.platform.tenant.RecordContext.Ancestry
+ 7, // 9: chainguard.platform.tenant.RecordContextFilter.variant:type_name -> chainguard.platform.tenant.RecordContext.Variant
+ 0, // 10: chainguard.platform.tenant.RecordContext.Ancestry.role:type_name -> chainguard.platform.tenant.RecordContext.Ancestry.Role
+ 1, // 11: chainguard.platform.tenant.RecordContext.Variant.role:type_name -> chainguard.platform.tenant.RecordContext.Variant.Role
+ 4, // 12: chainguard.platform.tenant.RecordContexts.List:input_type -> chainguard.platform.tenant.RecordContextFilter
+ 3, // 13: chainguard.platform.tenant.RecordContexts.List:output_type -> chainguard.platform.tenant.RecordContextList
+ 13, // [13:14] is the sub-list for method output_type
+ 12, // [12:13] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
+}
+
+func init() { file_context_platform_proto_init() }
+func file_context_platform_proto_init() {
+ if File_context_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_context_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContext); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_context_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContextList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_context_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContextFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_context_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContext_Workload); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_context_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContext_Ancestry); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_context_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordContext_Variant); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_context_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*RecordContext_Workload_)(nil),
+ (*RecordContext_Ancestry_)(nil),
+ (*RecordContext_Variant_)(nil),
+ }
+ file_context_platform_proto_msgTypes[2].OneofWrappers = []interface{}{
+ (*RecordContextFilter_Workload)(nil),
+ (*RecordContextFilter_Ancestry)(nil),
+ (*RecordContextFilter_Variant)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_context_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_context_platform_proto_goTypes,
+ DependencyIndexes: file_context_platform_proto_depIdxs,
+ EnumInfos: file_context_platform_proto_enumTypes,
+ MessageInfos: file_context_platform_proto_msgTypes,
+ }.Build()
+ File_context_platform_proto = out.File
+ file_context_platform_proto_rawDesc = nil
+ file_context_platform_proto_goTypes = nil
+ file_context_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/context.platform.proto b/proto/platform/tenant/v1/context.platform.proto
new file mode 100644
index 00000000..b16427b9
--- /dev/null
+++ b/proto/platform/tenant/v1/context.platform.proto
@@ -0,0 +1,119 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantRecordContextProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service RecordContexts {
+ rpc List(RecordContextFilter) returns (RecordContextList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_RECORD_CONTEXTS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message RecordContext {
+ // id, The RecordContext UIDP at which this RecordContext resides.
+ string id = 1;
+
+ // name of the RecordContext.
+ string name = 2;
+
+ // a short description of this RecordContext.
+ string description = 3;
+
+ // last_seen tracks the timestamp at which this RecordContext was last seen.
+ google.protobuf.Timestamp last_seen = 4;
+
+ oneof kind {
+ Workload workload = 100;
+ Ancestry ancestry = 101;
+ Variant variant = 102;
+ }
+
+ // Workload contexts are added to existence records that have been
+ // observed running on a cluster.
+ message Workload {
+ // remote_id is the metadata.uid of the workload in which this
+ // container was observed.
+ string remote_id = 1;
+ }
+
+ // Ancestry relationships are added to records when a "base image"
+ // relationship has been uncovered. This context is added to BOTH
+ // records with their respective roles. The base image will get
+ // the Role BASE, and the derivative image will get the Role DERIVED.
+ message Ancestry {
+ Role role = 1;
+
+ // image_id holds the digest of the related image, which can be used
+ // to efficiently retrieve it's record.
+ string image_id = 2;
+
+ enum Role {
+ UNKNOWN = 0;
+ BASE = 1;
+ DERIVED = 2;
+ }
+ }
+
+ // Variant relationships are added to records when we find an "index"
+ // containing multiple different variations (typically os/arch) of the
+ // same logical image. These are referred to as "OCI Image Index",
+ // "Docker Manifest List", and occasionally "fat images". This context
+ // is added to ALL records including the INDEX and all VARIANTs of that
+ // index. The INDEX will typically contain N contexts carrying the Role
+ // INDEX, the id of the VARIANT's record, and the version information
+ // that discriminates that VARIANT from other VARIANTs. The VARIANT
+ // will typically (but not always!) contain 1 context carrying the Role
+ // VARIANT, the id of the INDEX's record, and the version information
+ // that discriminates it among the other VARIANTs in the INDEX.
+ message Variant {
+ Role role = 1;
+
+ // image_id holds the digest of the related image, which can be used
+ // to efficiently retrieve it's record.
+ string image_id = 2;
+
+ // The version information distinguishing this variant
+ // from other possible variants of the index.
+ string version = 3;
+
+ enum Role {
+ UNKNOWN = 0;
+ INDEX = 1;
+ VARIANT = 2;
+ }
+ }
+}
+
+message RecordContextList {
+ repeated RecordContext items = 1;
+}
+
+message RecordContextFilter {
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ google.protobuf.Timestamp active_since = 2;
+
+ // Allow filtering results based on matching fields in the context
+ // ranging from just a particular "kind" to the exact workload shape.
+ // Only specified fields will be used as part of the match.
+ oneof kind {
+ RecordContext.Workload workload = 100;
+ RecordContext.Ancestry ancestry = 101;
+ RecordContext.Variant variant = 102;
+ }
+}
diff --git a/proto/platform/tenant/v1/context.platform_grpc.pb.go b/proto/platform/tenant/v1/context.platform_grpc.pb.go
new file mode 100644
index 00000000..41ca8f95
--- /dev/null
+++ b/proto/platform/tenant/v1/context.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: context.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ RecordContexts_List_FullMethodName = "/chainguard.platform.tenant.RecordContexts/List"
+)
+
+// RecordContextsClient is the client API for RecordContexts service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RecordContextsClient interface {
+ List(ctx context.Context, in *RecordContextFilter, opts ...grpc.CallOption) (*RecordContextList, error)
+}
+
+type recordContextsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRecordContextsClient(cc grpc.ClientConnInterface) RecordContextsClient {
+ return &recordContextsClient{cc}
+}
+
+func (c *recordContextsClient) List(ctx context.Context, in *RecordContextFilter, opts ...grpc.CallOption) (*RecordContextList, error) {
+ out := new(RecordContextList)
+ err := c.cc.Invoke(ctx, RecordContexts_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RecordContextsServer is the server API for RecordContexts service.
+// All implementations must embed UnimplementedRecordContextsServer
+// for forward compatibility
+type RecordContextsServer interface {
+ List(context.Context, *RecordContextFilter) (*RecordContextList, error)
+ mustEmbedUnimplementedRecordContextsServer()
+}
+
+// UnimplementedRecordContextsServer must be embedded to have forward compatible implementations.
+type UnimplementedRecordContextsServer struct {
+}
+
+func (UnimplementedRecordContextsServer) List(context.Context, *RecordContextFilter) (*RecordContextList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedRecordContextsServer) mustEmbedUnimplementedRecordContextsServer() {}
+
+// UnsafeRecordContextsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RecordContextsServer will
+// result in compilation errors.
+type UnsafeRecordContextsServer interface {
+ mustEmbedUnimplementedRecordContextsServer()
+}
+
+func RegisterRecordContextsServer(s grpc.ServiceRegistrar, srv RecordContextsServer) {
+ s.RegisterService(&RecordContexts_ServiceDesc, srv)
+}
+
+func _RecordContexts_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RecordContextFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RecordContextsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RecordContexts_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RecordContextsServer).List(ctx, req.(*RecordContextFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// RecordContexts_ServiceDesc is the grpc.ServiceDesc for RecordContexts service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var RecordContexts_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.RecordContexts",
+ HandlerType: (*RecordContextsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _RecordContexts_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "context.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
new file mode 100644
index 00000000..9441336f
--- /dev/null
+++ b/proto/platform/tenant/v1/doc.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v1 contains the v1 GRPC client and server definitions
+// for implementing Tenant interactions for the Console.
+//
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. cluster.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative context.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative node.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative namespace.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative policy_results.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative workload.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. record.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. risk.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. sbom.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. vuln.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. attestation.platform.proto
+package v1
diff --git a/proto/platform/tenant/v1/namespace.platform.pb.go b/proto/platform/tenant/v1/namespace.platform.pb.go
new file mode 100644
index 00000000..7653afcc
--- /dev/null
+++ b/proto/platform/tenant/v1/namespace.platform.pb.go
@@ -0,0 +1,395 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: namespace.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Namespace struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Namespace UIDP at which this Namespace resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the Namespace.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this Namespace.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // remote_id is the remote ID of this Namespace.
+ RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ // last_seen tracks the timestamp at which this namespace was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+}
+
+func (x *Namespace) Reset() {
+ *x = Namespace{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_namespace_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Namespace) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Namespace) ProtoMessage() {}
+
+func (x *Namespace) ProtoReflect() protoreflect.Message {
+ mi := &file_namespace_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Namespace.ProtoReflect.Descriptor instead.
+func (*Namespace) Descriptor() ([]byte, []int) {
+ return file_namespace_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Namespace) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Namespace) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Namespace) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Namespace) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *Namespace) GetLabels() string {
+ if x != nil {
+ return x.Labels
+ }
+ return ""
+}
+
+func (x *Namespace) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+type NamespaceList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Namespace `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *NamespaceList) Reset() {
+ *x = NamespaceList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_namespace_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NamespaceList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NamespaceList) ProtoMessage() {}
+
+func (x *NamespaceList) ProtoReflect() protoreflect.Message {
+ mi := &file_namespace_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NamespaceList.ProtoReflect.Descriptor instead.
+func (*NamespaceList) Descriptor() ([]byte, []int) {
+ return file_namespace_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *NamespaceList) GetItems() []*Namespace {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type NamespaceFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // remote_id is the remote ID of this Namespace.
+ RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ // active_since is the timestamp after which returned namespaces
+ // should have been active (last seen).
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // name filters on the resource name.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *NamespaceFilter) Reset() {
+ *x = NamespaceFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_namespace_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NamespaceFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NamespaceFilter) ProtoMessage() {}
+
+func (x *NamespaceFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_namespace_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NamespaceFilter.ProtoReflect.Descriptor instead.
+func (*NamespaceFilter) Descriptor() ([]byte, []int) {
+ return file_namespace_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *NamespaceFilter) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *NamespaceFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *NamespaceFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *NamespaceFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+var File_namespace_platform_proto protoreflect.FileDescriptor
+
+var file_namespace_platform_proto_rawDesc = []byte{
+ 0x0a, 0x18, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72,
+ 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x0d, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x0f, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72,
+ 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75,
+ 0x69, 0x64, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x7c, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
+ 0x02, 0xcf, 0x08, 0x10, 0x01, 0x42, 0x74, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1c,
+ 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
+ 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_namespace_platform_proto_rawDescOnce sync.Once
+ file_namespace_platform_proto_rawDescData = file_namespace_platform_proto_rawDesc
+)
+
+func file_namespace_platform_proto_rawDescGZIP() []byte {
+ file_namespace_platform_proto_rawDescOnce.Do(func() {
+ file_namespace_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_namespace_platform_proto_rawDescData)
+ })
+ return file_namespace_platform_proto_rawDescData
+}
+
+var file_namespace_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_namespace_platform_proto_goTypes = []interface{}{
+ (*Namespace)(nil), // 0: chainguard.platform.tenant.Namespace
+ (*NamespaceList)(nil), // 1: chainguard.platform.tenant.NamespaceList
+ (*NamespaceFilter)(nil), // 2: chainguard.platform.tenant.NamespaceFilter
+ (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
+}
+var file_namespace_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.tenant.Namespace.last_seen:type_name -> google.protobuf.Timestamp
+ 0, // 1: chainguard.platform.tenant.NamespaceList.items:type_name -> chainguard.platform.tenant.Namespace
+ 3, // 2: chainguard.platform.tenant.NamespaceFilter.active_since:type_name -> google.protobuf.Timestamp
+ 4, // 3: chainguard.platform.tenant.NamespaceFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 2, // 4: chainguard.platform.tenant.Namespaces.List:input_type -> chainguard.platform.tenant.NamespaceFilter
+ 1, // 5: chainguard.platform.tenant.Namespaces.List:output_type -> chainguard.platform.tenant.NamespaceList
+ 5, // [5:6] is the sub-list for method output_type
+ 4, // [4:5] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
+}
+
+func init() { file_namespace_platform_proto_init() }
+func file_namespace_platform_proto_init() {
+ if File_namespace_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_namespace_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Namespace); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_namespace_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NamespaceList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_namespace_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NamespaceFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_namespace_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_namespace_platform_proto_goTypes,
+ DependencyIndexes: file_namespace_platform_proto_depIdxs,
+ MessageInfos: file_namespace_platform_proto_msgTypes,
+ }.Build()
+ File_namespace_platform_proto = out.File
+ file_namespace_platform_proto_rawDesc = nil
+ file_namespace_platform_proto_goTypes = nil
+ file_namespace_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/namespace.platform.proto b/proto/platform/tenant/v1/namespace.platform.proto
new file mode 100644
index 00000000..0b86141a
--- /dev/null
+++ b/proto/platform/tenant/v1/namespace.platform.proto
@@ -0,0 +1,61 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantNamespaceProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Namespaces {
+ rpc List(NamespaceFilter) returns (NamespaceList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_NAMESPACES_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message Namespace {
+ // id, The Namespace UIDP at which this Namespace resides.
+ string id = 1;
+
+ // name of the Namespace.
+ string name = 2;
+
+ // a short description of this Namespace.
+ string description = 3;
+
+ // remote_id is the remote ID of this Namespace.
+ string remote_id = 4;
+
+ string labels = 5;
+
+ // last_seen tracks the timestamp at which this namespace was last seen.
+ google.protobuf.Timestamp last_seen = 6;
+}
+
+message NamespaceList {
+ repeated Namespace items = 1;
+}
+
+message NamespaceFilter {
+ // remote_id is the remote ID of this Namespace.
+ string remote_id = 2;
+
+ // active_since is the timestamp after which returned namespaces
+ // should have been active (last seen).
+ google.protobuf.Timestamp active_since = 3;
+
+ // name filters on the resource name.
+ string name = 4;
+
+
+ chainguard.platform.common.UIDPFilter uidp = 100;
+}
diff --git a/proto/platform/tenant/v1/namespace.platform_grpc.pb.go b/proto/platform/tenant/v1/namespace.platform_grpc.pb.go
new file mode 100644
index 00000000..178382e7
--- /dev/null
+++ b/proto/platform/tenant/v1/namespace.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: namespace.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Namespaces_List_FullMethodName = "/chainguard.platform.tenant.Namespaces/List"
+)
+
+// NamespacesClient is the client API for Namespaces service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type NamespacesClient interface {
+ List(ctx context.Context, in *NamespaceFilter, opts ...grpc.CallOption) (*NamespaceList, error)
+}
+
+type namespacesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewNamespacesClient(cc grpc.ClientConnInterface) NamespacesClient {
+ return &namespacesClient{cc}
+}
+
+func (c *namespacesClient) List(ctx context.Context, in *NamespaceFilter, opts ...grpc.CallOption) (*NamespaceList, error) {
+ out := new(NamespaceList)
+ err := c.cc.Invoke(ctx, Namespaces_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// NamespacesServer is the server API for Namespaces service.
+// All implementations must embed UnimplementedNamespacesServer
+// for forward compatibility
+type NamespacesServer interface {
+ List(context.Context, *NamespaceFilter) (*NamespaceList, error)
+ mustEmbedUnimplementedNamespacesServer()
+}
+
+// UnimplementedNamespacesServer must be embedded to have forward compatible implementations.
+type UnimplementedNamespacesServer struct {
+}
+
+func (UnimplementedNamespacesServer) List(context.Context, *NamespaceFilter) (*NamespaceList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedNamespacesServer) mustEmbedUnimplementedNamespacesServer() {}
+
+// UnsafeNamespacesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to NamespacesServer will
+// result in compilation errors.
+type UnsafeNamespacesServer interface {
+ mustEmbedUnimplementedNamespacesServer()
+}
+
+func RegisterNamespacesServer(s grpc.ServiceRegistrar, srv NamespacesServer) {
+ s.RegisterService(&Namespaces_ServiceDesc, srv)
+}
+
+func _Namespaces_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NamespaceFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(NamespacesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Namespaces_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(NamespacesServer).List(ctx, req.(*NamespaceFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Namespaces_ServiceDesc is the grpc.ServiceDesc for Namespaces service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Namespaces_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Namespaces",
+ HandlerType: (*NamespacesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Namespaces_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "namespace.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/node.platform.pb.go b/proto/platform/tenant/v1/node.platform.pb.go
new file mode 100644
index 00000000..e5a3eb90
--- /dev/null
+++ b/proto/platform/tenant/v1/node.platform.pb.go
@@ -0,0 +1,499 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: node.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Node struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Node UIDP at which this Node resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the Node.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this Node.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // remote_id is the remote ID of this Node.
+ RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ // last_seen tracks the timestamp at which this node was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // Platform/Architecture-level information (10+)
+ OperatingSystem string `protobuf:"bytes,10,opt,name=operating_system,json=operatingSystem,proto3" json:"operating_system,omitempty"`
+ Architecture string `protobuf:"bytes,11,opt,name=architecture,proto3" json:"architecture,omitempty"`
+ // Assorted versions (20+)
+ KubeletVersion string `protobuf:"bytes,20,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"`
+ ContainerRuntimeVersion string `protobuf:"bytes,21,opt,name=container_runtime_version,json=containerRuntimeVersion,proto3" json:"container_runtime_version,omitempty"`
+ KernelVersion string `protobuf:"bytes,22,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"`
+ // Node capacity information (30+)
+ CpuCapacity string `protobuf:"bytes,30,opt,name=cpu_capacity,json=cpuCapacity,proto3" json:"cpu_capacity,omitempty"`
+ MemoryCapacity string `protobuf:"bytes,31,opt,name=memory_capacity,json=memoryCapacity,proto3" json:"memory_capacity,omitempty"`
+ PodCapacity string `protobuf:"bytes,32,opt,name=pod_capacity,json=podCapacity,proto3" json:"pod_capacity,omitempty"`
+ // Location information (40+)
+ Zone string `protobuf:"bytes,40,opt,name=zone,proto3" json:"zone,omitempty"`
+ Region string `protobuf:"bytes,41,opt,name=region,proto3" json:"region,omitempty"`
+}
+
+func (x *Node) Reset() {
+ *x = Node{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_node_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Node) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Node) ProtoMessage() {}
+
+func (x *Node) ProtoReflect() protoreflect.Message {
+ mi := &file_node_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Node.ProtoReflect.Descriptor instead.
+func (*Node) Descriptor() ([]byte, []int) {
+ return file_node_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Node) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Node) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Node) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Node) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *Node) GetLabels() string {
+ if x != nil {
+ return x.Labels
+ }
+ return ""
+}
+
+func (x *Node) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Node) GetOperatingSystem() string {
+ if x != nil {
+ return x.OperatingSystem
+ }
+ return ""
+}
+
+func (x *Node) GetArchitecture() string {
+ if x != nil {
+ return x.Architecture
+ }
+ return ""
+}
+
+func (x *Node) GetKubeletVersion() string {
+ if x != nil {
+ return x.KubeletVersion
+ }
+ return ""
+}
+
+func (x *Node) GetContainerRuntimeVersion() string {
+ if x != nil {
+ return x.ContainerRuntimeVersion
+ }
+ return ""
+}
+
+func (x *Node) GetKernelVersion() string {
+ if x != nil {
+ return x.KernelVersion
+ }
+ return ""
+}
+
+func (x *Node) GetCpuCapacity() string {
+ if x != nil {
+ return x.CpuCapacity
+ }
+ return ""
+}
+
+func (x *Node) GetMemoryCapacity() string {
+ if x != nil {
+ return x.MemoryCapacity
+ }
+ return ""
+}
+
+func (x *Node) GetPodCapacity() string {
+ if x != nil {
+ return x.PodCapacity
+ }
+ return ""
+}
+
+func (x *Node) GetZone() string {
+ if x != nil {
+ return x.Zone
+ }
+ return ""
+}
+
+func (x *Node) GetRegion() string {
+ if x != nil {
+ return x.Region
+ }
+ return ""
+}
+
+type NodeList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *NodeList) Reset() {
+ *x = NodeList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_node_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeList) ProtoMessage() {}
+
+func (x *NodeList) ProtoReflect() protoreflect.Message {
+ mi := &file_node_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeList.ProtoReflect.Descriptor instead.
+func (*NodeList) Descriptor() ([]byte, []int) {
+ return file_node_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *NodeList) GetItems() []*Node {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type NodeFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // remote_id is the remote ID of this Node.
+ RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ // active_since is the timestamp after which returned nodes
+ // should have been active (last seen).
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // name filters on the resource name.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *NodeFilter) Reset() {
+ *x = NodeFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_node_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *NodeFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NodeFilter) ProtoMessage() {}
+
+func (x *NodeFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_node_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NodeFilter.ProtoReflect.Descriptor instead.
+func (*NodeFilter) Descriptor() ([]byte, []int) {
+ return file_node_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *NodeFilter) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *NodeFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *NodeFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *NodeFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+var File_node_platform_proto protoreflect.FileDescriptor
+
+var file_node_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
+ 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x22, 0xb0, 0x04, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73,
+ 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
+ 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72,
+ 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27,
+ 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+ 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74,
+ 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x65, 0x72,
+ 0x6e, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70,
+ 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x63, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a,
+ 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
+ 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f,
+ 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e,
+ 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,
+ 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x6f,
+ 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0a, 0x4e, 0x6f,
+ 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f,
+ 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
+ 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
+ 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
+ 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
+ 0x75, 0x69, 0x64, 0x70, 0x32, 0x6d, 0x0a, 0x05, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x64, 0x0a,
+ 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xeb,
+ 0x07, 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_node_platform_proto_rawDescOnce sync.Once
+ file_node_platform_proto_rawDescData = file_node_platform_proto_rawDesc
+)
+
+func file_node_platform_proto_rawDescGZIP() []byte {
+ file_node_platform_proto_rawDescOnce.Do(func() {
+ file_node_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_platform_proto_rawDescData)
+ })
+ return file_node_platform_proto_rawDescData
+}
+
+var file_node_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_node_platform_proto_goTypes = []interface{}{
+ (*Node)(nil), // 0: chainguard.platform.tenant.Node
+ (*NodeList)(nil), // 1: chainguard.platform.tenant.NodeList
+ (*NodeFilter)(nil), // 2: chainguard.platform.tenant.NodeFilter
+ (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
+}
+var file_node_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.tenant.Node.last_seen:type_name -> google.protobuf.Timestamp
+ 0, // 1: chainguard.platform.tenant.NodeList.items:type_name -> chainguard.platform.tenant.Node
+ 3, // 2: chainguard.platform.tenant.NodeFilter.active_since:type_name -> google.protobuf.Timestamp
+ 4, // 3: chainguard.platform.tenant.NodeFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 2, // 4: chainguard.platform.tenant.Nodes.List:input_type -> chainguard.platform.tenant.NodeFilter
+ 1, // 5: chainguard.platform.tenant.Nodes.List:output_type -> chainguard.platform.tenant.NodeList
+ 5, // [5:6] is the sub-list for method output_type
+ 4, // [4:5] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
+}
+
+func init() { file_node_platform_proto_init() }
+func file_node_platform_proto_init() {
+ if File_node_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_node_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Node); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_node_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_node_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*NodeFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_node_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_node_platform_proto_goTypes,
+ DependencyIndexes: file_node_platform_proto_depIdxs,
+ MessageInfos: file_node_platform_proto_msgTypes,
+ }.Build()
+ File_node_platform_proto = out.File
+ file_node_platform_proto_rawDesc = nil
+ file_node_platform_proto_goTypes = nil
+ file_node_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/node.platform.proto b/proto/platform/tenant/v1/node.platform.proto
new file mode 100644
index 00000000..5d50f5e0
--- /dev/null
+++ b/proto/platform/tenant/v1/node.platform.proto
@@ -0,0 +1,78 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantNodeProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Nodes {
+ rpc List(NodeFilter) returns (NodeList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_NODES_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message Node {
+ // id, The Node UIDP at which this Node resides.
+ string id = 1;
+
+ // name of the Node.
+ string name = 2;
+
+ // a short description of this Node.
+ string description = 3;
+
+ // remote_id is the remote ID of this Node.
+ string remote_id = 4;
+
+ string labels = 5;
+
+ // last_seen tracks the timestamp at which this node was last seen.
+ google.protobuf.Timestamp last_seen = 6;
+
+ // Platform/Architecture-level information (10+)
+ string operating_system = 10;
+ string architecture = 11;
+
+ // Assorted versions (20+)
+ string kubelet_version = 20;
+ string container_runtime_version = 21;
+ string kernel_version = 22;
+
+ // Node capacity information (30+)
+ string cpu_capacity = 30;
+ string memory_capacity = 31;
+ string pod_capacity = 32;
+
+ // Location information (40+)
+ string zone = 40;
+ string region = 41;
+}
+
+message NodeList {
+ repeated Node items = 1;
+}
+
+message NodeFilter {
+ // remote_id is the remote ID of this Node.
+ string remote_id = 2;
+
+ // active_since is the timestamp after which returned nodes
+ // should have been active (last seen).
+ google.protobuf.Timestamp active_since = 3;
+
+ // name filters on the resource name.
+ string name = 4;
+
+ chainguard.platform.common.UIDPFilter uidp = 100;
+}
diff --git a/proto/platform/tenant/v1/node.platform_grpc.pb.go b/proto/platform/tenant/v1/node.platform_grpc.pb.go
new file mode 100644
index 00000000..96f45690
--- /dev/null
+++ b/proto/platform/tenant/v1/node.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: node.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Nodes_List_FullMethodName = "/chainguard.platform.tenant.Nodes/List"
+)
+
+// NodesClient is the client API for Nodes service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type NodesClient interface {
+ List(ctx context.Context, in *NodeFilter, opts ...grpc.CallOption) (*NodeList, error)
+}
+
+type nodesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewNodesClient(cc grpc.ClientConnInterface) NodesClient {
+ return &nodesClient{cc}
+}
+
+func (c *nodesClient) List(ctx context.Context, in *NodeFilter, opts ...grpc.CallOption) (*NodeList, error) {
+ out := new(NodeList)
+ err := c.cc.Invoke(ctx, Nodes_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// NodesServer is the server API for Nodes service.
+// All implementations must embed UnimplementedNodesServer
+// for forward compatibility
+type NodesServer interface {
+ List(context.Context, *NodeFilter) (*NodeList, error)
+ mustEmbedUnimplementedNodesServer()
+}
+
+// UnimplementedNodesServer must be embedded to have forward compatible implementations.
+type UnimplementedNodesServer struct {
+}
+
+func (UnimplementedNodesServer) List(context.Context, *NodeFilter) (*NodeList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedNodesServer) mustEmbedUnimplementedNodesServer() {}
+
+// UnsafeNodesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to NodesServer will
+// result in compilation errors.
+type UnsafeNodesServer interface {
+ mustEmbedUnimplementedNodesServer()
+}
+
+func RegisterNodesServer(s grpc.ServiceRegistrar, srv NodesServer) {
+ s.RegisterService(&Nodes_ServiceDesc, srv)
+}
+
+func _Nodes_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodeFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(NodesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Nodes_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(NodesServer).List(ctx, req.(*NodeFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Nodes_ServiceDesc is the grpc.ServiceDesc for Nodes service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Nodes_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Nodes",
+ HandlerType: (*NodesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Nodes_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "node.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/policy_results.platform.pb.go b/proto/platform/tenant/v1/policy_results.platform.pb.go
new file mode 100644
index 00000000..2f395469
--- /dev/null
+++ b/proto/platform/tenant/v1/policy_results.platform.pb.go
@@ -0,0 +1,770 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: policy_results.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type PolicyResult_Result int32
+
+const (
+ PolicyResult_UNKNOWN PolicyResult_Result = 0
+ // PASS represents when a policy evaluation completed without any
+ // diagnostics returned.
+ PolicyResult_PASS PolicyResult_Result = 1
+ // WARN represents when a policy evaluation completed with warnings
+ // (e.g. the policy used mode: warn).
+ PolicyResult_WARN PolicyResult_Result = 2
+ // FAIL represents when a policy evaluation completed with errors
+ // (e.g. the policy used mode: enforce).
+ PolicyResult_FAIL PolicyResult_Result = 3
+)
+
+// Enum value maps for PolicyResult_Result.
+var (
+ PolicyResult_Result_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "PASS",
+ 2: "WARN",
+ 3: "FAIL",
+ }
+ PolicyResult_Result_value = map[string]int32{
+ "UNKNOWN": 0,
+ "PASS": 1,
+ "WARN": 2,
+ "FAIL": 3,
+ }
+)
+
+func (x PolicyResult_Result) Enum() *PolicyResult_Result {
+ p := new(PolicyResult_Result)
+ *p = x
+ return p
+}
+
+func (x PolicyResult_Result) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PolicyResult_Result) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_results_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (PolicyResult_Result) Type() protoreflect.EnumType {
+ return &file_policy_results_platform_proto_enumTypes[0]
+}
+
+func (x PolicyResult_Result) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PolicyResult_Result.Descriptor instead.
+func (PolicyResult_Result) EnumDescriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+type PolicyResult_ParentType int32
+
+const (
+ PolicyResult_PARENT_TYPE_UNKNOWN PolicyResult_ParentType = 0
+ PolicyResult_RECORD PolicyResult_ParentType = 1
+ PolicyResult_RECORD_CONTEXT PolicyResult_ParentType = 2
+ PolicyResult_WORKLOAD PolicyResult_ParentType = 3
+)
+
+// Enum value maps for PolicyResult_ParentType.
+var (
+ PolicyResult_ParentType_name = map[int32]string{
+ 0: "PARENT_TYPE_UNKNOWN",
+ 1: "RECORD",
+ 2: "RECORD_CONTEXT",
+ 3: "WORKLOAD",
+ }
+ PolicyResult_ParentType_value = map[string]int32{
+ "PARENT_TYPE_UNKNOWN": 0,
+ "RECORD": 1,
+ "RECORD_CONTEXT": 2,
+ "WORKLOAD": 3,
+ }
+)
+
+func (x PolicyResult_ParentType) Enum() *PolicyResult_ParentType {
+ p := new(PolicyResult_ParentType)
+ *p = x
+ return p
+}
+
+func (x PolicyResult_ParentType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PolicyResult_ParentType) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_results_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (PolicyResult_ParentType) Type() protoreflect.EnumType {
+ return &file_policy_results_platform_proto_enumTypes[1]
+}
+
+func (x PolicyResult_ParentType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PolicyResult_ParentType.Descriptor instead.
+func (PolicyResult_ParentType) EnumDescriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+type PolicyResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The PolicyResult UIDP at which this PolicyResult resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the PolicyResult.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this PolicyResult.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // policy_id is the metadata.uid of the Policy this result captures an evaluation of.
+ PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // version is the metadata.resourceVersion of the Policy this result captures an evaluation of.
+ Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
+ // last_checked tracks the timestamp at which this policy result was last checked.
+ LastChecked *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
+ // result holds the result of this policy evaluation.
+ Result PolicyResult_Result `protobuf:"varint,7,opt,name=result,proto3,enum=chainguard.platform.tenant.PolicyResult_Result" json:"result,omitempty"`
+ // diagnostic holds the diagnostic message associated with the result of this policy evaluation.
+ Diagnostic string `protobuf:"bytes,8,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
+ // This loosely tracks the policy-controller's PolicyResult type found here:
+ // https://github.com/sigstore/policy-controller/blob/f777dcc2e/pkg/webhook/validator_result.go
+ AuthorityMatches map[string]*PolicyResult_AuthorityMatch `protobuf:"bytes,9,rep,name=authority_matches,json=authorityMatches,proto3" json:"authority_matches,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // parent_type, It is the parent type associated with the PolicyResult, can be Record, RecordContext or Workload.
+ ParentType PolicyResult_ParentType `protobuf:"varint,10,opt,name=parent_type,json=parentType,proto3,enum=chainguard.platform.tenant.PolicyResult_ParentType" json:"parent_type,omitempty"`
+}
+
+func (x *PolicyResult) Reset() {
+ *x = PolicyResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_results_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyResult) ProtoMessage() {}
+
+func (x *PolicyResult) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_results_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyResult.ProtoReflect.Descriptor instead.
+func (*PolicyResult) Descriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *PolicyResult) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetLastChecked() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastChecked
+ }
+ return nil
+}
+
+func (x *PolicyResult) GetResult() PolicyResult_Result {
+ if x != nil {
+ return x.Result
+ }
+ return PolicyResult_UNKNOWN
+}
+
+func (x *PolicyResult) GetDiagnostic() string {
+ if x != nil {
+ return x.Diagnostic
+ }
+ return ""
+}
+
+func (x *PolicyResult) GetAuthorityMatches() map[string]*PolicyResult_AuthorityMatch {
+ if x != nil {
+ return x.AuthorityMatches
+ }
+ return nil
+}
+
+func (x *PolicyResult) GetParentType() PolicyResult_ParentType {
+ if x != nil {
+ return x.ParentType
+ }
+ return PolicyResult_PARENT_TYPE_UNKNOWN
+}
+
+type PolicyResultList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*PolicyResult `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *PolicyResultList) Reset() {
+ *x = PolicyResultList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_results_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyResultList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyResultList) ProtoMessage() {}
+
+func (x *PolicyResultList) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_results_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyResultList.ProtoReflect.Descriptor instead.
+func (*PolicyResultList) Descriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *PolicyResultList) GetItems() []*PolicyResult {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type PolicyResultFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // checked_since is the timestamp after which the policy should
+ // have last been checked.
+ CheckedSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=checked_since,json=checkedSince,proto3" json:"checked_since,omitempty"`
+ // policy_id looks up evaluations of the policy identified by this metadata.uid
+ PolicyId string `protobuf:"bytes,3,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
+ // results filters policy results with one of the provided result.
+ Results []PolicyResult_Result `protobuf:"varint,4,rep,packed,name=results,proto3,enum=chainguard.platform.tenant.PolicyResult_Result" json:"results,omitempty"`
+ // parent_type filters policy results with the provided parent_type.
+ ParentType PolicyResult_ParentType `protobuf:"varint,5,opt,name=parent_type,json=parentType,proto3,enum=chainguard.platform.tenant.PolicyResult_ParentType" json:"parent_type,omitempty"`
+}
+
+func (x *PolicyResultFilter) Reset() {
+ *x = PolicyResultFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_results_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyResultFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyResultFilter) ProtoMessage() {}
+
+func (x *PolicyResultFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_results_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyResultFilter.ProtoReflect.Descriptor instead.
+func (*PolicyResultFilter) Descriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *PolicyResultFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *PolicyResultFilter) GetCheckedSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CheckedSince
+ }
+ return nil
+}
+
+func (x *PolicyResultFilter) GetPolicyId() string {
+ if x != nil {
+ return x.PolicyId
+ }
+ return ""
+}
+
+func (x *PolicyResultFilter) GetResults() []PolicyResult_Result {
+ if x != nil {
+ return x.Results
+ }
+ return nil
+}
+
+func (x *PolicyResultFilter) GetParentType() PolicyResult_ParentType {
+ if x != nil {
+ return x.ParentType
+ }
+ return PolicyResult_PARENT_TYPE_UNKNOWN
+}
+
+type PolicyResult_AuthorityMatch struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The matched signatures.
+ Signatures *PolicyResult_AuthorityMatch_SignatureMatches `protobuf:"bytes,1,opt,name=signatures,proto3" json:"signatures,omitempty"`
+ // A map from attestation name to matched attestations.
+ Attestations map[string]*PolicyResult_AuthorityMatch_SignatureMatches `protobuf:"bytes,2,rep,name=attestations,proto3" json:"attestations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *PolicyResult_AuthorityMatch) Reset() {
+ *x = PolicyResult_AuthorityMatch{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_results_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyResult_AuthorityMatch) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyResult_AuthorityMatch) ProtoMessage() {}
+
+func (x *PolicyResult_AuthorityMatch) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_results_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyResult_AuthorityMatch.ProtoReflect.Descriptor instead.
+func (*PolicyResult_AuthorityMatch) Descriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+func (x *PolicyResult_AuthorityMatch) GetSignatures() *PolicyResult_AuthorityMatch_SignatureMatches {
+ if x != nil {
+ return x.Signatures
+ }
+ return nil
+}
+
+func (x *PolicyResult_AuthorityMatch) GetAttestations() map[string]*PolicyResult_AuthorityMatch_SignatureMatches {
+ if x != nil {
+ return x.Attestations
+ }
+ return nil
+}
+
+type PolicyResult_AuthorityMatch_SignatureMatches struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The list of signature record UIDPs
+ Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
+}
+
+func (x *PolicyResult_AuthorityMatch_SignatureMatches) Reset() {
+ *x = PolicyResult_AuthorityMatch_SignatureMatches{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_results_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PolicyResult_AuthorityMatch_SignatureMatches) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PolicyResult_AuthorityMatch_SignatureMatches) ProtoMessage() {}
+
+func (x *PolicyResult_AuthorityMatch_SignatureMatches) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_results_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PolicyResult_AuthorityMatch_SignatureMatches.ProtoReflect.Descriptor instead.
+func (*PolicyResult_AuthorityMatch_SignatureMatches) Descriptor() ([]byte, []int) {
+ return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1, 1}
+}
+
+func (x *PolicyResult_AuthorityMatch_SignatureMatches) GetIds() []string {
+ if x != nil {
+ return x.Ids
+ }
+ return nil
+}
+
+var File_policy_results_platform_proto protoreflect.FileDescriptor
+
+var file_policy_results_platform_proto_rawDesc = []byte{
+ 0x0a, 0x1d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+ 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x09, 0x0a,
+ 0x0c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61,
+ 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61,
+ 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x72, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
+ 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74,
+ 0x69, 0x63, 0x12, 0x6b, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x61,
+ 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12,
+ 0x54, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x7c, 0x0a, 0x15, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
+ 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
+ 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0x9b, 0x03, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x68, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
+ 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x65, 0x73, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x12, 0x6d, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
+ 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a,
+ 0x89, 0x01, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
+ 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x24, 0x0a, 0x10, 0x53,
+ 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12,
+ 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64,
+ 0x73, 0x22, 0x33, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55,
+ 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53,
+ 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,
+ 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x22, 0x53, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a,
+ 0x06, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x43,
+ 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a,
+ 0x08, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x22, 0x52, 0x0a, 0x10, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0xcf, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
+ 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69,
+ 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
+ 0x12, 0x49, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
+ 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x0b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+ 0x65, 0x32, 0x85, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x73, 0x12, 0x74, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x02, 0xf9, 0x04, 0x10, 0x01, 0x42, 0x77, 0x0a, 0x25, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x76, 0x31, 0x42, 0x1f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
+ 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_policy_results_platform_proto_rawDescOnce sync.Once
+ file_policy_results_platform_proto_rawDescData = file_policy_results_platform_proto_rawDesc
+)
+
+func file_policy_results_platform_proto_rawDescGZIP() []byte {
+ file_policy_results_platform_proto_rawDescOnce.Do(func() {
+ file_policy_results_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_policy_results_platform_proto_rawDescData)
+ })
+ return file_policy_results_platform_proto_rawDescData
+}
+
+var file_policy_results_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_policy_results_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_policy_results_platform_proto_goTypes = []interface{}{
+ (PolicyResult_Result)(0), // 0: chainguard.platform.tenant.PolicyResult.Result
+ (PolicyResult_ParentType)(0), // 1: chainguard.platform.tenant.PolicyResult.ParentType
+ (*PolicyResult)(nil), // 2: chainguard.platform.tenant.PolicyResult
+ (*PolicyResultList)(nil), // 3: chainguard.platform.tenant.PolicyResultList
+ (*PolicyResultFilter)(nil), // 4: chainguard.platform.tenant.PolicyResultFilter
+ nil, // 5: chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry
+ (*PolicyResult_AuthorityMatch)(nil), // 6: chainguard.platform.tenant.PolicyResult.AuthorityMatch
+ nil, // 7: chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry
+ (*PolicyResult_AuthorityMatch_SignatureMatches)(nil), // 8: chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
+ (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 10: chainguard.platform.common.UIDPFilter
+}
+var file_policy_results_platform_proto_depIdxs = []int32{
+ 9, // 0: chainguard.platform.tenant.PolicyResult.last_checked:type_name -> google.protobuf.Timestamp
+ 0, // 1: chainguard.platform.tenant.PolicyResult.result:type_name -> chainguard.platform.tenant.PolicyResult.Result
+ 5, // 2: chainguard.platform.tenant.PolicyResult.authority_matches:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry
+ 1, // 3: chainguard.platform.tenant.PolicyResult.parent_type:type_name -> chainguard.platform.tenant.PolicyResult.ParentType
+ 2, // 4: chainguard.platform.tenant.PolicyResultList.items:type_name -> chainguard.platform.tenant.PolicyResult
+ 10, // 5: chainguard.platform.tenant.PolicyResultFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 6: chainguard.platform.tenant.PolicyResultFilter.checked_since:type_name -> google.protobuf.Timestamp
+ 0, // 7: chainguard.platform.tenant.PolicyResultFilter.results:type_name -> chainguard.platform.tenant.PolicyResult.Result
+ 1, // 8: chainguard.platform.tenant.PolicyResultFilter.parent_type:type_name -> chainguard.platform.tenant.PolicyResult.ParentType
+ 6, // 9: chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry.value:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch
+ 8, // 10: chainguard.platform.tenant.PolicyResult.AuthorityMatch.signatures:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
+ 7, // 11: chainguard.platform.tenant.PolicyResult.AuthorityMatch.attestations:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry
+ 8, // 12: chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry.value:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
+ 4, // 13: chainguard.platform.tenant.PolicyResults.List:input_type -> chainguard.platform.tenant.PolicyResultFilter
+ 3, // 14: chainguard.platform.tenant.PolicyResults.List:output_type -> chainguard.platform.tenant.PolicyResultList
+ 14, // [14:15] is the sub-list for method output_type
+ 13, // [13:14] is the sub-list for method input_type
+ 13, // [13:13] is the sub-list for extension type_name
+ 13, // [13:13] is the sub-list for extension extendee
+ 0, // [0:13] is the sub-list for field type_name
+}
+
+func init() { file_policy_results_platform_proto_init() }
+func file_policy_results_platform_proto_init() {
+ if File_policy_results_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_policy_results_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyResult); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_results_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyResultList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_results_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyResultFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_results_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyResult_AuthorityMatch); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_results_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PolicyResult_AuthorityMatch_SignatureMatches); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_policy_results_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 7,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_policy_results_platform_proto_goTypes,
+ DependencyIndexes: file_policy_results_platform_proto_depIdxs,
+ EnumInfos: file_policy_results_platform_proto_enumTypes,
+ MessageInfos: file_policy_results_platform_proto_msgTypes,
+ }.Build()
+ File_policy_results_platform_proto = out.File
+ file_policy_results_platform_proto_rawDesc = nil
+ file_policy_results_platform_proto_goTypes = nil
+ file_policy_results_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/policy_results.platform.pb.gw.go b/proto/platform/tenant/v1/policy_results.platform.pb.gw.go
new file mode 100644
index 00000000..a1b084bb
--- /dev/null
+++ b/proto/platform/tenant/v1/policy_results.platform.pb.gw.go
@@ -0,0 +1,171 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: policy_results.platform.proto
+
+/*
+Package tenant is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_PolicyResults_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_PolicyResults_List_0(ctx context.Context, marshaler runtime.Marshaler, client PolicyResultsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PolicyResultFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PolicyResults_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_PolicyResults_List_0(ctx context.Context, marshaler runtime.Marshaler, server PolicyResultsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq PolicyResultFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PolicyResults_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterPolicyResultsHandlerServer registers the http handlers for service PolicyResults to "mux".
+// UnaryRPC :call PolicyResultsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPolicyResultsHandlerFromEndpoint instead.
+func RegisterPolicyResultsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PolicyResultsServer) error {
+
+ mux.Handle("GET", pattern_PolicyResults_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.PolicyResults/List", runtime.WithHTTPPathPattern("/tenant/v1/policyResults"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_PolicyResults_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_PolicyResults_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterPolicyResultsHandlerFromEndpoint is same as RegisterPolicyResultsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterPolicyResultsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterPolicyResultsHandler(ctx, mux, conn)
+}
+
+// RegisterPolicyResultsHandler registers the http handlers for service PolicyResults to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterPolicyResultsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterPolicyResultsHandlerClient(ctx, mux, NewPolicyResultsClient(conn))
+}
+
+// RegisterPolicyResultsHandlerClient registers the http handlers for service PolicyResults
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PolicyResultsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PolicyResultsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "PolicyResultsClient" to call the correct interceptors.
+func RegisterPolicyResultsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PolicyResultsClient) error {
+
+ mux.Handle("GET", pattern_PolicyResults_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.PolicyResults/List", runtime.WithHTTPPathPattern("/tenant/v1/policyResults"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_PolicyResults_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_PolicyResults_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_PolicyResults_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "policyResults"}, ""))
+)
+
+var (
+ forward_PolicyResults_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/policy_results.platform.proto b/proto/platform/tenant/v1/policy_results.platform.proto
new file mode 100644
index 00000000..d0680fea
--- /dev/null
+++ b/proto/platform/tenant/v1/policy_results.platform.proto
@@ -0,0 +1,113 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantPolicyResultProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service PolicyResults {
+ rpc List(PolicyResultFilter) returns (PolicyResultList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_RECORD_POLICY_RESULTS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message PolicyResult {
+ // id, The PolicyResult UIDP at which this PolicyResult resides.
+ string id = 1;
+
+ // name of the PolicyResult.
+ string name = 2;
+
+ // a short description of this PolicyResult.
+ string description = 3;
+
+ // policy_id is the metadata.uid of the Policy this result captures an evaluation of.
+ string policy_id = 4;
+
+ // version is the metadata.resourceVersion of the Policy this result captures an evaluation of.
+ string version = 5;
+
+ // last_checked tracks the timestamp at which this policy result was last checked.
+ google.protobuf.Timestamp last_checked = 6;
+
+ // result holds the result of this policy evaluation.
+ Result result = 7;
+
+ // diagnostic holds the diagnostic message associated with the result of this policy evaluation.
+ string diagnostic = 8;
+
+ enum Result {
+ UNKNOWN = 0;
+
+ // PASS represents when a policy evaluation completed without any
+ // diagnostics returned.
+ PASS = 1;
+
+ // WARN represents when a policy evaluation completed with warnings
+ // (e.g. the policy used mode: warn).
+ WARN = 2;
+
+ // FAIL represents when a policy evaluation completed with errors
+ // (e.g. the policy used mode: enforce).
+ FAIL = 3;
+ }
+
+ // This loosely tracks the policy-controller's PolicyResult type found here:
+ // https://github.com/sigstore/policy-controller/blob/f777dcc2e/pkg/webhook/validator_result.go
+ map authority_matches = 9;
+
+ message AuthorityMatch {
+ // The matched signatures.
+ SignatureMatches signatures = 1;
+
+ // A map from attestation name to matched attestations.
+ map attestations = 2;
+
+ message SignatureMatches {
+ // The list of signature record UIDPs
+ repeated string ids = 1;
+ }
+ }
+
+ // parent_type, It is the parent type associated with the PolicyResult, can be Record, RecordContext or Workload.
+ ParentType parent_type = 10;
+
+ enum ParentType {
+ PARENT_TYPE_UNKNOWN = 0;
+ RECORD = 1;
+ RECORD_CONTEXT = 2;
+ WORKLOAD = 3;
+ }
+}
+
+message PolicyResultList {
+ repeated PolicyResult items = 1;
+}
+
+message PolicyResultFilter {
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // checked_since is the timestamp after which the policy should
+ // have last been checked.
+ google.protobuf.Timestamp checked_since = 2;
+
+ // policy_id looks up evaluations of the policy identified by this metadata.uid
+ string policy_id = 3;
+
+ // results filters policy results with one of the provided result.
+ repeated PolicyResult.Result results = 4;
+
+ // parent_type filters policy results with the provided parent_type.
+ PolicyResult.ParentType parent_type = 5;
+}
diff --git a/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go b/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
new file mode 100644
index 00000000..148a00b6
--- /dev/null
+++ b/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: policy_results.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ PolicyResults_List_FullMethodName = "/chainguard.platform.tenant.PolicyResults/List"
+)
+
+// PolicyResultsClient is the client API for PolicyResults service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type PolicyResultsClient interface {
+ List(ctx context.Context, in *PolicyResultFilter, opts ...grpc.CallOption) (*PolicyResultList, error)
+}
+
+type policyResultsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewPolicyResultsClient(cc grpc.ClientConnInterface) PolicyResultsClient {
+ return &policyResultsClient{cc}
+}
+
+func (c *policyResultsClient) List(ctx context.Context, in *PolicyResultFilter, opts ...grpc.CallOption) (*PolicyResultList, error) {
+ out := new(PolicyResultList)
+ err := c.cc.Invoke(ctx, PolicyResults_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// PolicyResultsServer is the server API for PolicyResults service.
+// All implementations must embed UnimplementedPolicyResultsServer
+// for forward compatibility
+type PolicyResultsServer interface {
+ List(context.Context, *PolicyResultFilter) (*PolicyResultList, error)
+ mustEmbedUnimplementedPolicyResultsServer()
+}
+
+// UnimplementedPolicyResultsServer must be embedded to have forward compatible implementations.
+type UnimplementedPolicyResultsServer struct {
+}
+
+func (UnimplementedPolicyResultsServer) List(context.Context, *PolicyResultFilter) (*PolicyResultList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedPolicyResultsServer) mustEmbedUnimplementedPolicyResultsServer() {}
+
+// UnsafePolicyResultsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to PolicyResultsServer will
+// result in compilation errors.
+type UnsafePolicyResultsServer interface {
+ mustEmbedUnimplementedPolicyResultsServer()
+}
+
+func RegisterPolicyResultsServer(s grpc.ServiceRegistrar, srv PolicyResultsServer) {
+ s.RegisterService(&PolicyResults_ServiceDesc, srv)
+}
+
+func _PolicyResults_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PolicyResultFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(PolicyResultsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: PolicyResults_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(PolicyResultsServer).List(ctx, req.(*PolicyResultFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// PolicyResults_ServiceDesc is the grpc.ServiceDesc for PolicyResults service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var PolicyResults_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.PolicyResults",
+ HandlerType: (*PolicyResultsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _PolicyResults_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "policy_results.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/record.platform.pb.go b/proto/platform/tenant/v1/record.platform.pb.go
new file mode 100644
index 00000000..61aafa73
--- /dev/null
+++ b/proto/platform/tenant/v1/record.platform.pb.go
@@ -0,0 +1,1465 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: record.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type RecordStatus_Result int32
+
+const (
+ RecordStatus_UNKNOWN RecordStatus_Result = 0
+ RecordStatus_PASS RecordStatus_Result = 1
+ RecordStatus_FAIL RecordStatus_Result = 2
+)
+
+// Enum value maps for RecordStatus_Result.
+var (
+ RecordStatus_Result_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "PASS",
+ 2: "FAIL",
+ }
+ RecordStatus_Result_value = map[string]int32{
+ "UNKNOWN": 0,
+ "PASS": 1,
+ "FAIL": 2,
+ }
+)
+
+func (x RecordStatus_Result) Enum() *RecordStatus_Result {
+ p := new(RecordStatus_Result)
+ *p = x
+ return p
+}
+
+func (x RecordStatus_Result) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (RecordStatus_Result) Descriptor() protoreflect.EnumDescriptor {
+ return file_record_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (RecordStatus_Result) Type() protoreflect.EnumType {
+ return &file_record_platform_proto_enumTypes[0]
+}
+
+func (x RecordStatus_Result) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RecordStatus_Result.Descriptor instead.
+func (RecordStatus_Result) EnumDescriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{1, 0}
+}
+
+type Context_Ancestry_Role int32
+
+const (
+ Context_Ancestry_UNKNOWN Context_Ancestry_Role = 0
+ Context_Ancestry_BASE Context_Ancestry_Role = 1
+ Context_Ancestry_DERIVED Context_Ancestry_Role = 2
+)
+
+// Enum value maps for Context_Ancestry_Role.
+var (
+ Context_Ancestry_Role_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "BASE",
+ 2: "DERIVED",
+ }
+ Context_Ancestry_Role_value = map[string]int32{
+ "UNKNOWN": 0,
+ "BASE": 1,
+ "DERIVED": 2,
+ }
+)
+
+func (x Context_Ancestry_Role) Enum() *Context_Ancestry_Role {
+ p := new(Context_Ancestry_Role)
+ *p = x
+ return p
+}
+
+func (x Context_Ancestry_Role) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Context_Ancestry_Role) Descriptor() protoreflect.EnumDescriptor {
+ return file_record_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (Context_Ancestry_Role) Type() protoreflect.EnumType {
+ return &file_record_platform_proto_enumTypes[1]
+}
+
+func (x Context_Ancestry_Role) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Context_Ancestry_Role.Descriptor instead.
+func (Context_Ancestry_Role) EnumDescriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2, 1, 0}
+}
+
+type Context_Variant_Role int32
+
+const (
+ Context_Variant_UNKNOWN Context_Variant_Role = 0
+ Context_Variant_INDEX Context_Variant_Role = 1
+ Context_Variant_VARIANT Context_Variant_Role = 2
+)
+
+// Enum value maps for Context_Variant_Role.
+var (
+ Context_Variant_Role_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "INDEX",
+ 2: "VARIANT",
+ }
+ Context_Variant_Role_value = map[string]int32{
+ "UNKNOWN": 0,
+ "INDEX": 1,
+ "VARIANT": 2,
+ }
+)
+
+func (x Context_Variant_Role) Enum() *Context_Variant_Role {
+ p := new(Context_Variant_Role)
+ *p = x
+ return p
+}
+
+func (x Context_Variant_Role) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Context_Variant_Role) Descriptor() protoreflect.EnumDescriptor {
+ return file_record_platform_proto_enumTypes[2].Descriptor()
+}
+
+func (Context_Variant_Role) Type() protoreflect.EnumType {
+ return &file_record_platform_proto_enumTypes[2]
+}
+
+func (x Context_Variant_Role) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Context_Variant_Role.Descriptor instead.
+func (Context_Variant_Role) EnumDescriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2, 2, 0}
+}
+
+type Record struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id holds the UIDP for this image's record
+ Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"`
+ // cluster identifies the specific cluster for the record.
+ Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // image is the container image for the record.
+ Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
+ // last_seen is the last time we've seen this image anywhere on this cluster.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // last_refreshed will hold a PredicateType => Last time it was successfully
+ // refreshed.
+ LastRefreshed map[string]*timestamppb.Timestamp `protobuf:"bytes,4,rep,name=last_refreshed,json=lastRefreshed,proto3" json:"last_refreshed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ Sboms []*Sbom `protobuf:"bytes,6,rep,name=sboms,proto3" json:"sboms,omitempty"`
+ // status is a map from analysis type (e.g. "sbom", "vuln") => RecordStatus to indidate success/failure,
+ // the analysis timestamp, as well as any diagnostic message in case of failures.
+ Status map[string]*RecordStatus `protobuf:"bytes,9,rep,name=status,proto3" json:"status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *Record) Reset() {
+ *x = Record{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Record) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Record) ProtoMessage() {}
+
+func (x *Record) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Record.ProtoReflect.Descriptor instead.
+func (*Record) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Record) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Record) GetCluster() string {
+ if x != nil {
+ return x.Cluster
+ }
+ return ""
+}
+
+func (x *Record) GetImage() string {
+ if x != nil {
+ return x.Image
+ }
+ return ""
+}
+
+func (x *Record) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Record) GetLastRefreshed() map[string]*timestamppb.Timestamp {
+ if x != nil {
+ return x.LastRefreshed
+ }
+ return nil
+}
+
+func (x *Record) GetSboms() []*Sbom {
+ if x != nil {
+ return x.Sboms
+ }
+ return nil
+}
+
+func (x *Record) GetStatus() map[string]*RecordStatus {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+type RecordStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ LastChecked *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
+ Result RecordStatus_Result `protobuf:"varint,2,opt,name=result,proto3,enum=chainguard.platform.tenant.RecordStatus_Result" json:"result,omitempty"`
+ Diagnostic string `protobuf:"bytes,3,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
+}
+
+func (x *RecordStatus) Reset() {
+ *x = RecordStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordStatus) ProtoMessage() {}
+
+func (x *RecordStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordStatus.ProtoReflect.Descriptor instead.
+func (*RecordStatus) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RecordStatus) GetLastChecked() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastChecked
+ }
+ return nil
+}
+
+func (x *RecordStatus) GetResult() RecordStatus_Result {
+ if x != nil {
+ return x.Result
+ }
+ return RecordStatus_UNKNOWN
+}
+
+func (x *RecordStatus) GetDiagnostic() string {
+ if x != nil {
+ return x.Diagnostic
+ }
+ return ""
+}
+
+type Context struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // context_id is a unique ID, output only.
+ ContextId string `protobuf:"bytes,1,opt,name=context_id,json=contextId,proto3" json:"context_id,omitempty"`
+ // last_seen is the last time we've seen the image_id in this context.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // Types that are assignable to Context:
+ //
+ // *Context_Workload_
+ // *Context_Ancestry_
+ // *Context_Variant_
+ Context isContext_Context `protobuf_oneof:"context"`
+}
+
+func (x *Context) Reset() {
+ *x = Context{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Context) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Context) ProtoMessage() {}
+
+func (x *Context) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Context.ProtoReflect.Descriptor instead.
+func (*Context) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Context) GetContextId() string {
+ if x != nil {
+ return x.ContextId
+ }
+ return ""
+}
+
+func (x *Context) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (m *Context) GetContext() isContext_Context {
+ if m != nil {
+ return m.Context
+ }
+ return nil
+}
+
+func (x *Context) GetWorkload() *Context_Workload {
+ if x, ok := x.GetContext().(*Context_Workload_); ok {
+ return x.Workload
+ }
+ return nil
+}
+
+func (x *Context) GetAncestry() *Context_Ancestry {
+ if x, ok := x.GetContext().(*Context_Ancestry_); ok {
+ return x.Ancestry
+ }
+ return nil
+}
+
+func (x *Context) GetVariant() *Context_Variant {
+ if x, ok := x.GetContext().(*Context_Variant_); ok {
+ return x.Variant
+ }
+ return nil
+}
+
+type isContext_Context interface {
+ isContext_Context()
+}
+
+type Context_Workload_ struct {
+ Workload *Context_Workload `protobuf:"bytes,10,opt,name=workload,proto3,oneof"`
+}
+
+type Context_Ancestry_ struct {
+ Ancestry *Context_Ancestry `protobuf:"bytes,11,opt,name=ancestry,proto3,oneof"`
+}
+
+type Context_Variant_ struct {
+ Variant *Context_Variant `protobuf:"bytes,12,opt,name=variant,proto3,oneof"`
+}
+
+func (*Context_Workload_) isContext_Context() {}
+
+func (*Context_Ancestry_) isContext_Context() {}
+
+func (*Context_Variant_) isContext_Context() {}
+
+type Sbom struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"`
+}
+
+func (x *Sbom) Reset() {
+ *x = Sbom{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Sbom) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sbom) ProtoMessage() {}
+
+func (x *Sbom) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Sbom.ProtoReflect.Descriptor instead.
+func (*Sbom) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *Sbom) GetPackages() []*Package {
+ if x != nil {
+ return x.Packages
+ }
+ return nil
+}
+
+type Package struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ Purl string `protobuf:"bytes,3,opt,name=purl,proto3" json:"purl,omitempty"`
+}
+
+func (x *Package) Reset() {
+ *x = Package{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Package) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Package) ProtoMessage() {}
+
+func (x *Package) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Package.ProtoReflect.Descriptor instead.
+func (*Package) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Package) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Package) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *Package) GetPurl() string {
+ if x != nil {
+ return x.Purl
+ }
+ return ""
+}
+
+type Policy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // last_checked holds when this policy was last evaluated.
+ LastChecked *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
+ // valid holds whether the policy evaluation was successful.
+ Valid bool `protobuf:"varint,2,opt,name=valid,proto3" json:"valid,omitempty"`
+ // diagnostic holds any messages surfaced by the policy evaluation.
+ Diagnostic string `protobuf:"bytes,3,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
+}
+
+func (x *Policy) Reset() {
+ *x = Policy{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Policy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Policy) ProtoMessage() {}
+
+func (x *Policy) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
+func (*Policy) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Policy) GetLastChecked() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastChecked
+ }
+ return nil
+}
+
+func (x *Policy) GetValid() bool {
+ if x != nil {
+ return x.Valid
+ }
+ return false
+}
+
+func (x *Policy) GetDiagnostic() string {
+ if x != nil {
+ return x.Diagnostic
+ }
+ return ""
+}
+
+type RecordList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Record `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RecordList) Reset() {
+ *x = RecordList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordList) ProtoMessage() {}
+
+func (x *RecordList) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordList.ProtoReflect.Descriptor instead.
+func (*RecordList) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *RecordList) GetItems() []*Record {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type RecordFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
+ // uidp filters records based on their position in the group hierarchy.
+ Uidp *v1.UIDPFilter `protobuf:"bytes,6,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // image is specified if a specific Record is desired.
+ Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
+ // predicate specifies to fetch Records where either there's no
+ // LastRefreshed for this predicate type, or if it needs to be refreshed.
+ Predicate string `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
+ // cluster is specified if restricting to a given cluster id.
+ // This field is required.
+ Cluster string `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // active_since is the timestamp after which returned records should have been active.
+ // This applies to when an image was "last seen".
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+}
+
+func (x *RecordFilter) Reset() {
+ *x = RecordFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RecordFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecordFilter) ProtoMessage() {}
+
+func (x *RecordFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecordFilter.ProtoReflect.Descriptor instead.
+func (*RecordFilter) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *RecordFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RecordFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *RecordFilter) GetImage() string {
+ if x != nil {
+ return x.Image
+ }
+ return ""
+}
+
+func (x *RecordFilter) GetPredicate() string {
+ if x != nil {
+ return x.Predicate
+ }
+ return ""
+}
+
+func (x *RecordFilter) GetCluster() string {
+ if x != nil {
+ return x.Cluster
+ }
+ return ""
+}
+
+func (x *RecordFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+// TODO: Replace with upstream proto messages wherever possible.
+type GroupVersionKind struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+ Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
+}
+
+func (x *GroupVersionKind) Reset() {
+ *x = GroupVersionKind{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GroupVersionKind) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupVersionKind) ProtoMessage() {}
+
+func (x *GroupVersionKind) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupVersionKind.ProtoReflect.Descriptor instead.
+func (*GroupVersionKind) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *GroupVersionKind) GetGroup() string {
+ if x != nil {
+ return x.Group
+ }
+ return ""
+}
+
+func (x *GroupVersionKind) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *GroupVersionKind) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+// Workload contexts are added to existence records that have been
+// observed running on a cluster.
+type Context_Workload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Kind *GroupVersionKind `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
+}
+
+func (x *Context_Workload) Reset() {
+ *x = Context_Workload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Context_Workload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Context_Workload) ProtoMessage() {}
+
+func (x *Context_Workload) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Context_Workload.ProtoReflect.Descriptor instead.
+func (*Context_Workload) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2, 0}
+}
+
+func (x *Context_Workload) GetKind() *GroupVersionKind {
+ if x != nil {
+ return x.Kind
+ }
+ return nil
+}
+
+func (x *Context_Workload) GetNamespace() string {
+ if x != nil {
+ return x.Namespace
+ }
+ return ""
+}
+
+func (x *Context_Workload) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Context_Workload) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+// Ancestry relationships are added to records when a "base image"
+// relationship has been uncovered. This context is added to BOTH
+// records with their respective roles. The base image will get
+// the Role BASE, and the derivative image will get the Rile DERIVED.
+type Context_Ancestry struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Role Context_Ancestry_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.Context_Ancestry_Role" json:"role,omitempty"`
+ // The id of the other image's record in this ancestry relationship.
+ // If our Role is BASE, then this will hold the ID of the DERIVED
+ // image's record, and vice versa.
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *Context_Ancestry) Reset() {
+ *x = Context_Ancestry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Context_Ancestry) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Context_Ancestry) ProtoMessage() {}
+
+func (x *Context_Ancestry) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Context_Ancestry.ProtoReflect.Descriptor instead.
+func (*Context_Ancestry) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2, 1}
+}
+
+func (x *Context_Ancestry) GetRole() Context_Ancestry_Role {
+ if x != nil {
+ return x.Role
+ }
+ return Context_Ancestry_UNKNOWN
+}
+
+func (x *Context_Ancestry) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+// Variant relationships are added to records when we find an "index"
+// containing multiple different variations (typically os/arch) of the
+// same logical image. These are referred to as "OCI Image Index",
+// "Docker Manifest List", and occasionally "fat images". This context
+// is added to ALL records including the INDEX and all VARIANTs of that
+// index. The INDEX will typically contain N contexts carrying the Role
+// INDEX, the id of the VARIANT's record, and the version information
+// that discriminates that VARIANT from other VARIANTs. The VARIANT
+// will typically (but not always!) contain 1 context varrying the Role
+// VARIANT, the id of the INDEX's record, and the version information
+// that discriminates it among the other VARIANTs in the INDEX.
+type Context_Variant struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Role Context_Variant_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.Context_Variant_Role" json:"role,omitempty"`
+ // The id of the image index's record linking this
+ // image (transitively) to the cluster.
+ Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ // The version information distinguishing this variant
+ // from other possible variants of the index.
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *Context_Variant) Reset() {
+ *x = Context_Variant{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_record_platform_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Context_Variant) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Context_Variant) ProtoMessage() {}
+
+func (x *Context_Variant) ProtoReflect() protoreflect.Message {
+ mi := &file_record_platform_proto_msgTypes[13]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Context_Variant.ProtoReflect.Descriptor instead.
+func (*Context_Variant) Descriptor() ([]byte, []int) {
+ return file_record_platform_proto_rawDescGZIP(), []int{2, 2}
+}
+
+func (x *Context_Variant) GetRole() Context_Variant_Role {
+ if x != nil {
+ return x.Role
+ }
+ return Context_Variant_UNKNOWN
+}
+
+func (x *Context_Variant) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Context_Variant) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+var File_record_platform_proto protoreflect.FileDescriptor
+
+var file_record_platform_proto_rawDesc = []byte{
+ 0x0a, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
+ 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x22, 0xae, 0x04, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a,
+ 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
+ 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x5c, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72,
+ 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65,
+ 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x05, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x12, 0x46, 0x0a, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+ 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x1a, 0x5c, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72,
+ 0x65, 0x73, 0x68, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
+ 0x08, 0x10, 0x09, 0x22, 0xe1, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65,
+ 0x63, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65,
+ 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a,
+ 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x22, 0x29, 0x0a, 0x06,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
+ 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a,
+ 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x06, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
+ 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08, 0x77,
+ 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73,
+ 0x74, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41,
+ 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73,
+ 0x74, 0x72, 0x79, 0x12, 0x47, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x0c,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
+ 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x1a, 0x90, 0x01, 0x0a,
+ 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
+ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a,
+ 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x1a,
+ 0x8d, 0x01, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e,
+ 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72,
+ 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
+ 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x41, 0x53, 0x45,
+ 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, 0x1a,
+ 0xa6, 0x01, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x72,
+ 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56,
+ 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x04, 0x52,
+ 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
+ 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56,
+ 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x22, 0x47, 0x0a, 0x04, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x3f, 0x0a, 0x08, 0x70,
+ 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x07,
+ 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x22, 0x83, 0x01, 0x0a, 0x06, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65,
+ 0x63, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63,
+ 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x61,
+ 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64,
+ 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22,
+ 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+ 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
+ 0x75, 0x69, 0x64, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
+ 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
+ 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e,
+ 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+ 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63,
+ 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x32,
+ 0xa1, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x04,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25,
+ 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x72, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xdb,
+ 0x04, 0x10, 0x01, 0x42, 0x72, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_record_platform_proto_rawDescOnce sync.Once
+ file_record_platform_proto_rawDescData = file_record_platform_proto_rawDesc
+)
+
+func file_record_platform_proto_rawDescGZIP() []byte {
+ file_record_platform_proto_rawDescOnce.Do(func() {
+ file_record_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_record_platform_proto_rawDescData)
+ })
+ return file_record_platform_proto_rawDescData
+}
+
+var file_record_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_record_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
+var file_record_platform_proto_goTypes = []interface{}{
+ (RecordStatus_Result)(0), // 0: chainguard.platform.tenant.RecordStatus.Result
+ (Context_Ancestry_Role)(0), // 1: chainguard.platform.tenant.Context.Ancestry.Role
+ (Context_Variant_Role)(0), // 2: chainguard.platform.tenant.Context.Variant.Role
+ (*Record)(nil), // 3: chainguard.platform.tenant.Record
+ (*RecordStatus)(nil), // 4: chainguard.platform.tenant.RecordStatus
+ (*Context)(nil), // 5: chainguard.platform.tenant.Context
+ (*Sbom)(nil), // 6: chainguard.platform.tenant.Sbom
+ (*Package)(nil), // 7: chainguard.platform.tenant.Package
+ (*Policy)(nil), // 8: chainguard.platform.tenant.Policy
+ (*RecordList)(nil), // 9: chainguard.platform.tenant.RecordList
+ (*RecordFilter)(nil), // 10: chainguard.platform.tenant.RecordFilter
+ (*GroupVersionKind)(nil), // 11: chainguard.platform.tenant.GroupVersionKind
+ nil, // 12: chainguard.platform.tenant.Record.LastRefreshedEntry
+ nil, // 13: chainguard.platform.tenant.Record.StatusEntry
+ (*Context_Workload)(nil), // 14: chainguard.platform.tenant.Context.Workload
+ (*Context_Ancestry)(nil), // 15: chainguard.platform.tenant.Context.Ancestry
+ (*Context_Variant)(nil), // 16: chainguard.platform.tenant.Context.Variant
+ (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 18: chainguard.platform.common.UIDPFilter
+}
+var file_record_platform_proto_depIdxs = []int32{
+ 17, // 0: chainguard.platform.tenant.Record.last_seen:type_name -> google.protobuf.Timestamp
+ 12, // 1: chainguard.platform.tenant.Record.last_refreshed:type_name -> chainguard.platform.tenant.Record.LastRefreshedEntry
+ 6, // 2: chainguard.platform.tenant.Record.sboms:type_name -> chainguard.platform.tenant.Sbom
+ 13, // 3: chainguard.platform.tenant.Record.status:type_name -> chainguard.platform.tenant.Record.StatusEntry
+ 17, // 4: chainguard.platform.tenant.RecordStatus.last_checked:type_name -> google.protobuf.Timestamp
+ 0, // 5: chainguard.platform.tenant.RecordStatus.result:type_name -> chainguard.platform.tenant.RecordStatus.Result
+ 17, // 6: chainguard.platform.tenant.Context.last_seen:type_name -> google.protobuf.Timestamp
+ 14, // 7: chainguard.platform.tenant.Context.workload:type_name -> chainguard.platform.tenant.Context.Workload
+ 15, // 8: chainguard.platform.tenant.Context.ancestry:type_name -> chainguard.platform.tenant.Context.Ancestry
+ 16, // 9: chainguard.platform.tenant.Context.variant:type_name -> chainguard.platform.tenant.Context.Variant
+ 7, // 10: chainguard.platform.tenant.Sbom.packages:type_name -> chainguard.platform.tenant.Package
+ 17, // 11: chainguard.platform.tenant.Policy.last_checked:type_name -> google.protobuf.Timestamp
+ 3, // 12: chainguard.platform.tenant.RecordList.items:type_name -> chainguard.platform.tenant.Record
+ 18, // 13: chainguard.platform.tenant.RecordFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 17, // 14: chainguard.platform.tenant.RecordFilter.active_since:type_name -> google.protobuf.Timestamp
+ 17, // 15: chainguard.platform.tenant.Record.LastRefreshedEntry.value:type_name -> google.protobuf.Timestamp
+ 4, // 16: chainguard.platform.tenant.Record.StatusEntry.value:type_name -> chainguard.platform.tenant.RecordStatus
+ 11, // 17: chainguard.platform.tenant.Context.Workload.kind:type_name -> chainguard.platform.tenant.GroupVersionKind
+ 1, // 18: chainguard.platform.tenant.Context.Ancestry.role:type_name -> chainguard.platform.tenant.Context.Ancestry.Role
+ 2, // 19: chainguard.platform.tenant.Context.Variant.role:type_name -> chainguard.platform.tenant.Context.Variant.Role
+ 10, // 20: chainguard.platform.tenant.Records.List:input_type -> chainguard.platform.tenant.RecordFilter
+ 9, // 21: chainguard.platform.tenant.Records.List:output_type -> chainguard.platform.tenant.RecordList
+ 21, // [21:22] is the sub-list for method output_type
+ 20, // [20:21] is the sub-list for method input_type
+ 20, // [20:20] is the sub-list for extension type_name
+ 20, // [20:20] is the sub-list for extension extendee
+ 0, // [0:20] is the sub-list for field type_name
+}
+
+func init() { file_record_platform_proto_init() }
+func file_record_platform_proto_init() {
+ if File_record_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_record_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Record); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Context); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Sbom); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Package); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Policy); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RecordFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GroupVersionKind); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Context_Workload); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Context_Ancestry); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_record_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Context_Variant); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_record_platform_proto_msgTypes[2].OneofWrappers = []interface{}{
+ (*Context_Workload_)(nil),
+ (*Context_Ancestry_)(nil),
+ (*Context_Variant_)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_record_platform_proto_rawDesc,
+ NumEnums: 3,
+ NumMessages: 14,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_record_platform_proto_goTypes,
+ DependencyIndexes: file_record_platform_proto_depIdxs,
+ EnumInfos: file_record_platform_proto_enumTypes,
+ MessageInfos: file_record_platform_proto_msgTypes,
+ }.Build()
+ File_record_platform_proto = out.File
+ file_record_platform_proto_rawDesc = nil
+ file_record_platform_proto_goTypes = nil
+ file_record_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/record.platform.pb.gw.go b/proto/platform/tenant/v1/record.platform.pb.gw.go
new file mode 100644
index 00000000..ee0f69c1
--- /dev/null
+++ b/proto/platform/tenant/v1/record.platform.pb.gw.go
@@ -0,0 +1,205 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: record.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_Records_List_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
+)
+
+func request_Records_List_0(ctx context.Context, marshaler runtime.Marshaler, client RecordsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RecordFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["cluster"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster")
+ }
+
+ protoReq.Cluster, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Records_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Records_List_0(ctx context.Context, marshaler runtime.Marshaler, server RecordsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RecordFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["cluster"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster")
+ }
+
+ protoReq.Cluster, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Records_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterRecordsHandlerServer registers the http handlers for service Records to "mux".
+// UnaryRPC :call RecordsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRecordsHandlerFromEndpoint instead.
+func RegisterRecordsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RecordsServer) error {
+
+ mux.Handle("GET", pattern_Records_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Records/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{cluster}/records"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Records_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Records_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterRecordsHandlerFromEndpoint is same as RegisterRecordsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterRecordsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterRecordsHandler(ctx, mux, conn)
+}
+
+// RegisterRecordsHandler registers the http handlers for service Records to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterRecordsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterRecordsHandlerClient(ctx, mux, NewRecordsClient(conn))
+}
+
+// RegisterRecordsHandlerClient registers the http handlers for service Records
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RecordsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RecordsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "RecordsClient" to call the correct interceptors.
+func RegisterRecordsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RecordsClient) error {
+
+ mux.Handle("GET", pattern_Records_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Records/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{cluster}/records"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Records_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Records_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Records_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"tenant", "v1", "clusters", "cluster", "records"}, ""))
+)
+
+var (
+ forward_Records_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/record.platform.proto b/proto/platform/tenant/v1/record.platform.proto
new file mode 100644
index 00000000..81a0dbf7
--- /dev/null
+++ b/proto/platform/tenant/v1/record.platform.proto
@@ -0,0 +1,203 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantClusterProto";
+
+package chainguard.platform.tenant;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Records {
+ rpc List(RecordFilter) returns (RecordList) {
+ option (google.api.http) = {
+ // TODO: I am not sure this inner cluster will work with our id. Gotta test.
+ get: "/tenant/v1/clusters/{cluster}/records"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_RECORDS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message Record {
+ // id holds the UIDP for this image's record
+ string id = 7;
+
+ // cluster identifies the specific cluster for the record.
+ string cluster = 1;
+
+ // image is the container image for the record.
+ string image = 2;
+
+ // last_seen is the last time we've seen this image anywhere on this cluster.
+ google.protobuf.Timestamp last_seen = 3;
+
+ // last_refreshed will hold a PredicateType => Last time it was successfully
+ // refreshed.
+ map last_refreshed = 4;
+
+ // This field was retired and is no longer served.
+ reserved 5;
+
+ repeated Sbom sboms = 6;
+
+ // This field was retired and is no longer served.
+ reserved 8;
+
+ // status is a map from analysis type (e.g. "sbom", "vuln") => RecordStatus to indidate success/failure,
+ // the analysis timestamp, as well as any diagnostic message in case of failures.
+ map status = 9;
+}
+
+message RecordStatus {
+ google.protobuf.Timestamp last_checked = 1;
+ Result result = 2;
+ string diagnostic = 3;
+
+ enum Result {
+ UNKNOWN = 0;
+ PASS = 1;
+ FAIL = 2;
+ }
+}
+
+message Context {
+ // context_id is a unique ID, output only.
+ string context_id = 1;
+
+ // last_seen is the last time we've seen the image_id in this context.
+ google.protobuf.Timestamp last_seen = 2;
+
+ oneof context {
+ Workload workload = 10;
+ Ancestry ancestry = 11;
+ Variant variant = 12;
+ }
+
+ // Workload contexts are added to existence records that have been
+ // observed running on a cluster.
+ message Workload {
+ GroupVersionKind kind = 1;
+ string namespace = 2;
+ string name = 3;
+ string uid = 4;
+ }
+
+ // Ancestry relationships are added to records when a "base image"
+ // relationship has been uncovered. This context is added to BOTH
+ // records with their respective roles. The base image will get
+ // the Role BASE, and the derivative image will get the Rile DERIVED.
+ message Ancestry {
+ Role role = 1;
+
+ // The id of the other image's record in this ancestry relationship.
+ // If our Role is BASE, then this will hold the ID of the DERIVED
+ // image's record, and vice versa.
+ string id = 2;
+
+ enum Role {
+ UNKNOWN = 0;
+ BASE = 1;
+ DERIVED = 2;
+ }
+ }
+
+ // Variant relationships are added to records when we find an "index"
+ // containing multiple different variations (typically os/arch) of the
+ // same logical image. These are referred to as "OCI Image Index",
+ // "Docker Manifest List", and occasionally "fat images". This context
+ // is added to ALL records including the INDEX and all VARIANTs of that
+ // index. The INDEX will typically contain N contexts carrying the Role
+ // INDEX, the id of the VARIANT's record, and the version information
+ // that discriminates that VARIANT from other VARIANTs. The VARIANT
+ // will typically (but not always!) contain 1 context varrying the Role
+ // VARIANT, the id of the INDEX's record, and the version information
+ // that discriminates it among the other VARIANTs in the INDEX.
+ message Variant {
+ Role role = 1;
+
+ // The id of the image index's record linking this
+ // image (transitively) to the cluster.
+ string id = 2;
+
+ // The version information distinguishing this variant
+ // from other possible variants of the index.
+ string version = 3;
+
+ enum Role {
+ UNKNOWN = 0;
+ INDEX = 1;
+ VARIANT = 2;
+ }
+ }
+}
+
+message Sbom {
+ repeated Package packages = 1;
+}
+
+message Package {
+ string name = 1;
+ string version = 2;
+ string purl = 3;
+}
+
+message Policy {
+ // last_checked holds when this policy was last evaluated.
+ google.protobuf.Timestamp last_checked = 1;
+
+ // valid holds whether the policy evaluation was successful.
+ bool valid = 2;
+
+ // diagnostic holds any messages surfaced by the policy evaluation.
+ string diagnostic = 3;
+
+ reserved 4;
+}
+
+message RecordList {
+ repeated Record items = 1;
+}
+
+message RecordFilter {
+ // id is the exact UID of the record.
+ string id = 5;
+
+ // uidp filters records based on their position in the group hierarchy.
+ chainguard.platform.common.UIDPFilter uidp = 6;
+
+ // image is specified if a specific Record is desired.
+ string image = 1;
+
+ // predicate specifies to fetch Records where either there's no
+ // LastRefreshed for this predicate type, or if it needs to be refreshed.
+ string predicate = 2;
+
+ // cluster is specified if restricting to a given cluster id.
+ // This field is required.
+ string cluster = 3;
+
+ // active_since is the timestamp after which returned records should have been active.
+ // This applies to when an image was "last seen".
+ google.protobuf.Timestamp active_since = 4;
+
+ // This field was retired and is no longer served.
+ reserved 7;
+
+ // Next ID: 8
+}
+
+// TODO: Replace with upstream proto messages wherever possible.
+message GroupVersionKind {
+ string group = 1;
+ string version = 2;
+ string kind = 3;
+}
diff --git a/proto/platform/tenant/v1/record.platform_grpc.pb.go b/proto/platform/tenant/v1/record.platform_grpc.pb.go
new file mode 100644
index 00000000..d94b1499
--- /dev/null
+++ b/proto/platform/tenant/v1/record.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: record.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Records_List_FullMethodName = "/chainguard.platform.tenant.Records/List"
+)
+
+// RecordsClient is the client API for Records service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RecordsClient interface {
+ List(ctx context.Context, in *RecordFilter, opts ...grpc.CallOption) (*RecordList, error)
+}
+
+type recordsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRecordsClient(cc grpc.ClientConnInterface) RecordsClient {
+ return &recordsClient{cc}
+}
+
+func (c *recordsClient) List(ctx context.Context, in *RecordFilter, opts ...grpc.CallOption) (*RecordList, error) {
+ out := new(RecordList)
+ err := c.cc.Invoke(ctx, Records_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RecordsServer is the server API for Records service.
+// All implementations must embed UnimplementedRecordsServer
+// for forward compatibility
+type RecordsServer interface {
+ List(context.Context, *RecordFilter) (*RecordList, error)
+ mustEmbedUnimplementedRecordsServer()
+}
+
+// UnimplementedRecordsServer must be embedded to have forward compatible implementations.
+type UnimplementedRecordsServer struct {
+}
+
+func (UnimplementedRecordsServer) List(context.Context, *RecordFilter) (*RecordList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedRecordsServer) mustEmbedUnimplementedRecordsServer() {}
+
+// UnsafeRecordsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RecordsServer will
+// result in compilation errors.
+type UnsafeRecordsServer interface {
+ mustEmbedUnimplementedRecordsServer()
+}
+
+func RegisterRecordsServer(s grpc.ServiceRegistrar, srv RecordsServer) {
+ s.RegisterService(&Records_ServiceDesc, srv)
+}
+
+func _Records_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RecordFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RecordsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Records_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RecordsServer).List(ctx, req.(*RecordFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Records_ServiceDesc is the grpc.ServiceDesc for Records service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Records_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Records",
+ HandlerType: (*RecordsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Records_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "record.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/risk.platform.pb.go b/proto/platform/tenant/v1/risk.platform.pb.go
new file mode 100644
index 00000000..0c6c18f7
--- /dev/null
+++ b/proto/platform/tenant/v1/risk.platform.pb.go
@@ -0,0 +1,947 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: risk.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Risk_MissingData_Type int32
+
+const (
+ Risk_MissingData_UNKNOWN Risk_MissingData_Type = 0
+ Risk_MissingData_SIGNATURE Risk_MissingData_Type = 1
+ Risk_MissingData_SBOM Risk_MissingData_Type = 2
+ Risk_MissingData_POLICY Risk_MissingData_Type = 3
+)
+
+// Enum value maps for Risk_MissingData_Type.
+var (
+ Risk_MissingData_Type_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "SIGNATURE",
+ 2: "SBOM",
+ 3: "POLICY",
+ }
+ Risk_MissingData_Type_value = map[string]int32{
+ "UNKNOWN": 0,
+ "SIGNATURE": 1,
+ "SBOM": 2,
+ "POLICY": 3,
+ }
+)
+
+func (x Risk_MissingData_Type) Enum() *Risk_MissingData_Type {
+ p := new(Risk_MissingData_Type)
+ *p = x
+ return p
+}
+
+func (x Risk_MissingData_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Risk_MissingData_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_risk_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (Risk_MissingData_Type) Type() protoreflect.EnumType {
+ return &file_risk_platform_proto_enumTypes[0]
+}
+
+func (x Risk_MissingData_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Risk_MissingData_Type.Descriptor instead.
+func (Risk_MissingData_Type) EnumDescriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2, 1, 0}
+}
+
+type Risk_Vulnerability_Severity int32
+
+const (
+ Risk_Vulnerability_UNKNOWN Risk_Vulnerability_Severity = 0
+ Risk_Vulnerability_LOW Risk_Vulnerability_Severity = 1
+ Risk_Vulnerability_MEDIUM Risk_Vulnerability_Severity = 2
+ Risk_Vulnerability_HIGH Risk_Vulnerability_Severity = 3
+ Risk_Vulnerability_CRITICAL Risk_Vulnerability_Severity = 4
+)
+
+// Enum value maps for Risk_Vulnerability_Severity.
+var (
+ Risk_Vulnerability_Severity_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "LOW",
+ 2: "MEDIUM",
+ 3: "HIGH",
+ 4: "CRITICAL",
+ }
+ Risk_Vulnerability_Severity_value = map[string]int32{
+ "UNKNOWN": 0,
+ "LOW": 1,
+ "MEDIUM": 2,
+ "HIGH": 3,
+ "CRITICAL": 4,
+ }
+)
+
+func (x Risk_Vulnerability_Severity) Enum() *Risk_Vulnerability_Severity {
+ p := new(Risk_Vulnerability_Severity)
+ *p = x
+ return p
+}
+
+func (x Risk_Vulnerability_Severity) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Risk_Vulnerability_Severity) Descriptor() protoreflect.EnumDescriptor {
+ return file_risk_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (Risk_Vulnerability_Severity) Type() protoreflect.EnumType {
+ return &file_risk_platform_proto_enumTypes[1]
+}
+
+func (x Risk_Vulnerability_Severity) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Risk_Vulnerability_Severity.Descriptor instead.
+func (Risk_Vulnerability_Severity) EnumDescriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2, 2, 0}
+}
+
+type RiskFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *RiskFilter) Reset() {
+ *x = RiskFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RiskFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RiskFilter) ProtoMessage() {}
+
+func (x *RiskFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RiskFilter.ProtoReflect.Descriptor instead.
+func (*RiskFilter) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *RiskFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *RiskFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+type RiskList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Risk `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *RiskList) Reset() {
+ *x = RiskList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *RiskList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RiskList) ProtoMessage() {}
+
+func (x *RiskList) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use RiskList.ProtoReflect.Descriptor instead.
+func (*RiskList) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RiskList) GetItems() []*Risk {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type Risk struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Risk ID (UIDP resource + unique ID)
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Grouping identifier to associate Risks in the same UIDP
+ // to each other.
+ GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ // List of UIDPs that were used to determine this Risk.
+ Inputs []string `protobuf:"bytes,3,rep,name=inputs,proto3" json:"inputs,omitempty"`
+ // What kind of risk is this? Lack of signatures, vulnerability, SBOM quality, etc.
+ Details *Risk_Details `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"`
+ // Output only. Free form text describing this Risk.
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+ // Output only. Chainguard EDU link for more details on this Risk.
+ DocumentationUrl string `protobuf:"bytes,6,opt,name=documentation_url,json=documentationUrl,proto3" json:"documentation_url,omitempty"`
+ // Optional. Chainguard's recommendation(s) for how to resolve this Risk.
+ Recommendations []*Recommendation `protobuf:"bytes,7,rep,name=recommendations,proto3" json:"recommendations,omitempty"`
+ // Output only. When Enforce last saw this Risk.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+}
+
+func (x *Risk) Reset() {
+ *x = Risk{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Risk) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Risk) ProtoMessage() {}
+
+func (x *Risk) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Risk.ProtoReflect.Descriptor instead.
+func (*Risk) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Risk) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Risk) GetGroupId() string {
+ if x != nil {
+ return x.GroupId
+ }
+ return ""
+}
+
+func (x *Risk) GetInputs() []string {
+ if x != nil {
+ return x.Inputs
+ }
+ return nil
+}
+
+func (x *Risk) GetDetails() *Risk_Details {
+ if x != nil {
+ return x.Details
+ }
+ return nil
+}
+
+func (x *Risk) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Risk) GetDocumentationUrl() string {
+ if x != nil {
+ return x.DocumentationUrl
+ }
+ return ""
+}
+
+func (x *Risk) GetRecommendations() []*Recommendation {
+ if x != nil {
+ return x.Recommendations
+ }
+ return nil
+}
+
+func (x *Risk) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+type Recommendation struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Classification of what kind of remediation this is, e.g.:
+ // upgrade, replace, etc.
+ //
+ // Types that are assignable to Action:
+ //
+ // *Recommendation_Replace
+ Action isRecommendation_Action `protobuf_oneof:"action"`
+ // Output only. Free form text describing how this can be resolved.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // Output only. Chainguard EDU link for more details on this Recommendation.
+ DocumentationUrl string `protobuf:"bytes,4,opt,name=documentation_url,json=documentationUrl,proto3" json:"documentation_url,omitempty"`
+}
+
+func (x *Recommendation) Reset() {
+ *x = Recommendation{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Recommendation) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Recommendation) ProtoMessage() {}
+
+func (x *Recommendation) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Recommendation.ProtoReflect.Descriptor instead.
+func (*Recommendation) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (m *Recommendation) GetAction() isRecommendation_Action {
+ if m != nil {
+ return m.Action
+ }
+ return nil
+}
+
+func (x *Recommendation) GetReplace() *Recommendation_ReplaceArtifact {
+ if x, ok := x.GetAction().(*Recommendation_Replace); ok {
+ return x.Replace
+ }
+ return nil
+}
+
+func (x *Recommendation) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Recommendation) GetDocumentationUrl() string {
+ if x != nil {
+ return x.DocumentationUrl
+ }
+ return ""
+}
+
+type isRecommendation_Action interface {
+ isRecommendation_Action()
+}
+
+type Recommendation_Replace struct {
+ Replace *Recommendation_ReplaceArtifact `protobuf:"bytes,1,opt,name=replace,proto3,oneof"`
+}
+
+func (*Recommendation_Replace) isRecommendation_Action() {}
+
+type Risk_Details struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Data:
+ //
+ // *Risk_Details_MissingData
+ Data isRisk_Details_Data `protobuf_oneof:"data"`
+}
+
+func (x *Risk_Details) Reset() {
+ *x = Risk_Details{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Risk_Details) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Risk_Details) ProtoMessage() {}
+
+func (x *Risk_Details) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Risk_Details.ProtoReflect.Descriptor instead.
+func (*Risk_Details) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2, 0}
+}
+
+func (m *Risk_Details) GetData() isRisk_Details_Data {
+ if m != nil {
+ return m.Data
+ }
+ return nil
+}
+
+func (x *Risk_Details) GetMissingData() *Risk_MissingData {
+ if x, ok := x.GetData().(*Risk_Details_MissingData); ok {
+ return x.MissingData
+ }
+ return nil
+}
+
+type isRisk_Details_Data interface {
+ isRisk_Details_Data()
+}
+
+type Risk_Details_MissingData struct {
+ MissingData *Risk_MissingData `protobuf:"bytes,1,opt,name=missing_data,json=missingData,proto3,oneof"`
+}
+
+func (*Risk_Details_MissingData) isRisk_Details_Data() {}
+
+type Risk_MissingData struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // What kind of data is missing (e.g. signature, sbom, policy, etc.)
+ Type Risk_MissingData_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.tenant.Risk_MissingData_Type" json:"type,omitempty"`
+}
+
+func (x *Risk_MissingData) Reset() {
+ *x = Risk_MissingData{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Risk_MissingData) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Risk_MissingData) ProtoMessage() {}
+
+func (x *Risk_MissingData) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Risk_MissingData.ProtoReflect.Descriptor instead.
+func (*Risk_MissingData) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2, 1}
+}
+
+func (x *Risk_MissingData) GetType() Risk_MissingData_Type {
+ if x != nil {
+ return x.Type
+ }
+ return Risk_MissingData_UNKNOWN
+}
+
+type Risk_Vulnerability struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Severity Risk_Vulnerability_Severity `protobuf:"varint,5,opt,name=severity,proto3,enum=chainguard.platform.tenant.Risk_Vulnerability_Severity" json:"severity,omitempty"`
+ // External identifier of the source of the vuln - e.g. CVE ID.
+ Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"`
+}
+
+func (x *Risk_Vulnerability) Reset() {
+ *x = Risk_Vulnerability{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Risk_Vulnerability) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Risk_Vulnerability) ProtoMessage() {}
+
+func (x *Risk_Vulnerability) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Risk_Vulnerability.ProtoReflect.Descriptor instead.
+func (*Risk_Vulnerability) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{2, 2}
+}
+
+func (x *Risk_Vulnerability) GetSeverity() Risk_Vulnerability_Severity {
+ if x != nil {
+ return x.Severity
+ }
+ return Risk_Vulnerability_UNKNOWN
+}
+
+func (x *Risk_Vulnerability) GetSource() string {
+ if x != nil {
+ return x.Source
+ }
+ return ""
+}
+
+type Recommendation_ReplaceArtifact struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
+ // Target artifact that may be able to resolve this Risk.
+ To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
+}
+
+func (x *Recommendation_ReplaceArtifact) Reset() {
+ *x = Recommendation_ReplaceArtifact{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_risk_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Recommendation_ReplaceArtifact) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Recommendation_ReplaceArtifact) ProtoMessage() {}
+
+func (x *Recommendation_ReplaceArtifact) ProtoReflect() protoreflect.Message {
+ mi := &file_risk_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Recommendation_ReplaceArtifact.ProtoReflect.Descriptor instead.
+func (*Recommendation_ReplaceArtifact) Descriptor() ([]byte, []int) {
+ return file_risk_platform_proto_rawDescGZIP(), []int{3, 0}
+}
+
+func (x *Recommendation_ReplaceArtifact) GetFrom() string {
+ if x != nil {
+ return x.From
+ }
+ return ""
+}
+
+func (x *Recommendation_ReplaceArtifact) GetTo() string {
+ if x != nil {
+ return x.To
+ }
+ return ""
+}
+
+var File_risk_platform_proto protoreflect.FileDescriptor
+
+var file_risk_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
+ 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64,
+ 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x22, 0x58, 0x0a, 0x0a, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x42, 0x0a, 0x08, 0x52, 0x69,
+ 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa7,
+ 0x06, 0x0a, 0x04, 0x52, 0x69, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x64, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e, 0x44, 0x65,
+ 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20,
+ 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x54, 0x0a,
+ 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x1a, 0x64, 0x0a, 0x07,
+ 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x69,
+ 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e,
+ 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61,
+ 0x74, 0x61, 0x1a, 0x8e, 0x01, 0x0a, 0x0b, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61,
+ 0x74, 0x61, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69,
+ 0x73, 0x6b, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54,
+ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x38, 0x0a, 0x04, 0x54, 0x79, 0x70,
+ 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d,
+ 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a,
+ 0x04, 0x53, 0x42, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43,
+ 0x59, 0x10, 0x03, 0x1a, 0xc2, 0x01, 0x0a, 0x0d, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74,
+ 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79,
+ 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x22, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c,
+ 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02,
+ 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52,
+ 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
+ 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c,
+ 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55,
+ 0x72, 0x6c, 0x1a, 0x35, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x72, 0x74,
+ 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x32, 0x85, 0x01, 0x0a, 0x05, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x7c, 0x0a,
+ 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x80, 0x05, 0x10, 0x01, 0x42, 0x69, 0x0a, 0x25, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
+ 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x69,
+ 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_risk_platform_proto_rawDescOnce sync.Once
+ file_risk_platform_proto_rawDescData = file_risk_platform_proto_rawDesc
+)
+
+func file_risk_platform_proto_rawDescGZIP() []byte {
+ file_risk_platform_proto_rawDescOnce.Do(func() {
+ file_risk_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_risk_platform_proto_rawDescData)
+ })
+ return file_risk_platform_proto_rawDescData
+}
+
+var file_risk_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_risk_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_risk_platform_proto_goTypes = []interface{}{
+ (Risk_MissingData_Type)(0), // 0: chainguard.platform.tenant.Risk.MissingData.Type
+ (Risk_Vulnerability_Severity)(0), // 1: chainguard.platform.tenant.Risk.Vulnerability.Severity
+ (*RiskFilter)(nil), // 2: chainguard.platform.tenant.RiskFilter
+ (*RiskList)(nil), // 3: chainguard.platform.tenant.RiskList
+ (*Risk)(nil), // 4: chainguard.platform.tenant.Risk
+ (*Recommendation)(nil), // 5: chainguard.platform.tenant.Recommendation
+ (*Risk_Details)(nil), // 6: chainguard.platform.tenant.Risk.Details
+ (*Risk_MissingData)(nil), // 7: chainguard.platform.tenant.Risk.MissingData
+ (*Risk_Vulnerability)(nil), // 8: chainguard.platform.tenant.Risk.Vulnerability
+ (*Recommendation_ReplaceArtifact)(nil), // 9: chainguard.platform.tenant.Recommendation.ReplaceArtifact
+ (*v1.UIDPFilter)(nil), // 10: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp
+}
+var file_risk_platform_proto_depIdxs = []int32{
+ 10, // 0: chainguard.platform.tenant.RiskFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 4, // 1: chainguard.platform.tenant.RiskList.items:type_name -> chainguard.platform.tenant.Risk
+ 6, // 2: chainguard.platform.tenant.Risk.details:type_name -> chainguard.platform.tenant.Risk.Details
+ 5, // 3: chainguard.platform.tenant.Risk.recommendations:type_name -> chainguard.platform.tenant.Recommendation
+ 11, // 4: chainguard.platform.tenant.Risk.last_seen:type_name -> google.protobuf.Timestamp
+ 9, // 5: chainguard.platform.tenant.Recommendation.replace:type_name -> chainguard.platform.tenant.Recommendation.ReplaceArtifact
+ 7, // 6: chainguard.platform.tenant.Risk.Details.missing_data:type_name -> chainguard.platform.tenant.Risk.MissingData
+ 0, // 7: chainguard.platform.tenant.Risk.MissingData.type:type_name -> chainguard.platform.tenant.Risk.MissingData.Type
+ 1, // 8: chainguard.platform.tenant.Risk.Vulnerability.severity:type_name -> chainguard.platform.tenant.Risk.Vulnerability.Severity
+ 2, // 9: chainguard.platform.tenant.Risks.List:input_type -> chainguard.platform.tenant.RiskFilter
+ 3, // 10: chainguard.platform.tenant.Risks.List:output_type -> chainguard.platform.tenant.RiskList
+ 10, // [10:11] is the sub-list for method output_type
+ 9, // [9:10] 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_risk_platform_proto_init() }
+func file_risk_platform_proto_init() {
+ if File_risk_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_risk_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RiskFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RiskList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Risk); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Recommendation); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Risk_Details); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Risk_MissingData); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Risk_Vulnerability); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_risk_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Recommendation_ReplaceArtifact); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_risk_platform_proto_msgTypes[3].OneofWrappers = []interface{}{
+ (*Recommendation_Replace)(nil),
+ }
+ file_risk_platform_proto_msgTypes[4].OneofWrappers = []interface{}{
+ (*Risk_Details_MissingData)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_risk_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 8,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_risk_platform_proto_goTypes,
+ DependencyIndexes: file_risk_platform_proto_depIdxs,
+ EnumInfos: file_risk_platform_proto_enumTypes,
+ MessageInfos: file_risk_platform_proto_msgTypes,
+ }.Build()
+ File_risk_platform_proto = out.File
+ file_risk_platform_proto_rawDesc = nil
+ file_risk_platform_proto_goTypes = nil
+ file_risk_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/risk.platform.pb.gw.go b/proto/platform/tenant/v1/risk.platform.pb.gw.go
new file mode 100644
index 00000000..26acbe14
--- /dev/null
+++ b/proto/platform/tenant/v1/risk.platform.pb.gw.go
@@ -0,0 +1,171 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: risk.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_Risks_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_Risks_List_0(ctx context.Context, marshaler runtime.Marshaler, client RisksClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RiskFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Risks_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Risks_List_0(ctx context.Context, marshaler runtime.Marshaler, server RisksServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq RiskFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Risks_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterRisksHandlerServer registers the http handlers for service Risks to "mux".
+// UnaryRPC :call RisksServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRisksHandlerFromEndpoint instead.
+func RegisterRisksHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RisksServer) error {
+
+ mux.Handle("GET", pattern_Risks_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Risks/List", runtime.WithHTTPPathPattern("/tenant/v1/risks"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Risks_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Risks_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterRisksHandlerFromEndpoint is same as RegisterRisksHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterRisksHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterRisksHandler(ctx, mux, conn)
+}
+
+// RegisterRisksHandler registers the http handlers for service Risks to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterRisksHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterRisksHandlerClient(ctx, mux, NewRisksClient(conn))
+}
+
+// RegisterRisksHandlerClient registers the http handlers for service Risks
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RisksClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RisksClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "RisksClient" to call the correct interceptors.
+func RegisterRisksHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RisksClient) error {
+
+ mux.Handle("GET", pattern_Risks_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Risks/List", runtime.WithHTTPPathPattern("/tenant/v1/risks"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Risks_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Risks_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Risks_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "risks"}, ""))
+)
+
+var (
+ forward_Risks_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/risk.platform.proto b/proto/platform/tenant/v1/risk.platform.proto
new file mode 100644
index 00000000..73bf6c94
--- /dev/null
+++ b/proto/platform/tenant/v1/risk.platform.proto
@@ -0,0 +1,116 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformRiskProto";
+
+package chainguard.platform.tenant;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Risks {
+ rpc List(RiskFilter) returns (RiskList) {
+ option (google.api.http) = {
+ get: "/tenant/v1/risks"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_RISKS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message RiskFilter{
+ // id is the exact UID of the record.
+ string id = 1;
+
+ chainguard.platform.common.UIDPFilter uidp = 2;
+}
+
+message RiskList{
+ repeated Risk items = 1;
+}
+
+message Risk {
+ // Risk ID (UIDP resource + unique ID)
+ string id = 1;
+
+ // Grouping identifier to associate Risks in the same UIDP
+ // to each other.
+ string group_id = 2;
+
+ // List of UIDPs that were used to determine this Risk.
+ repeated string inputs = 3;
+
+ // What kind of risk is this? Lack of signatures, vulnerability, SBOM quality, etc.
+ Details details = 4;
+
+ message Details {
+ oneof data {
+ MissingData missing_data = 1;
+ }
+ }
+
+ message MissingData {
+ // What kind of data is missing (e.g. signature, sbom, policy, etc.)
+ Type type = 1;
+
+ enum Type {
+ UNKNOWN = 0;
+ SIGNATURE = 1;
+ SBOM = 2;
+ POLICY = 3;
+ }
+ }
+
+ message Vulnerability {
+ Severity severity = 5;
+
+ enum Severity {
+ UNKNOWN = 0;
+ LOW = 1;
+ MEDIUM = 2;
+ HIGH = 3;
+ CRITICAL = 4;
+ }
+
+ // External identifier of the source of the vuln - e.g. CVE ID.
+ string source = 7;
+ }
+
+ // Output only. Free form text describing this Risk.
+ string description = 5;
+ // Output only. Chainguard EDU link for more details on this Risk.
+ string documentation_url = 6;
+
+ // Optional. Chainguard's recommendation(s) for how to resolve this Risk.
+ repeated Recommendation recommendations = 7;
+
+ // Output only. When Enforce last saw this Risk.
+ google.protobuf.Timestamp last_seen = 8;
+}
+
+message Recommendation {
+ // Classification of what kind of remediation this is, e.g.:
+ // upgrade, replace, etc.
+ oneof action {
+ ReplaceArtifact replace = 1;
+ }
+
+ message ReplaceArtifact {
+ string from = 1;
+ // Target artifact that may be able to resolve this Risk.
+ string to = 2;
+ }
+
+ // Output only. Free form text describing how this can be resolved.
+ string description = 3;
+ // Output only. Chainguard EDU link for more details on this Recommendation.
+ string documentation_url = 4;
+}
diff --git a/proto/platform/tenant/v1/risk.platform_grpc.pb.go b/proto/platform/tenant/v1/risk.platform_grpc.pb.go
new file mode 100644
index 00000000..91a9739e
--- /dev/null
+++ b/proto/platform/tenant/v1/risk.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: risk.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Risks_List_FullMethodName = "/chainguard.platform.tenant.Risks/List"
+)
+
+// RisksClient is the client API for Risks service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type RisksClient interface {
+ List(ctx context.Context, in *RiskFilter, opts ...grpc.CallOption) (*RiskList, error)
+}
+
+type risksClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewRisksClient(cc grpc.ClientConnInterface) RisksClient {
+ return &risksClient{cc}
+}
+
+func (c *risksClient) List(ctx context.Context, in *RiskFilter, opts ...grpc.CallOption) (*RiskList, error) {
+ out := new(RiskList)
+ err := c.cc.Invoke(ctx, Risks_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// RisksServer is the server API for Risks service.
+// All implementations must embed UnimplementedRisksServer
+// for forward compatibility
+type RisksServer interface {
+ List(context.Context, *RiskFilter) (*RiskList, error)
+ mustEmbedUnimplementedRisksServer()
+}
+
+// UnimplementedRisksServer must be embedded to have forward compatible implementations.
+type UnimplementedRisksServer struct {
+}
+
+func (UnimplementedRisksServer) List(context.Context, *RiskFilter) (*RiskList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedRisksServer) mustEmbedUnimplementedRisksServer() {}
+
+// UnsafeRisksServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to RisksServer will
+// result in compilation errors.
+type UnsafeRisksServer interface {
+ mustEmbedUnimplementedRisksServer()
+}
+
+func RegisterRisksServer(s grpc.ServiceRegistrar, srv RisksServer) {
+ s.RegisterService(&Risks_ServiceDesc, srv)
+}
+
+func _Risks_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RiskFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RisksServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Risks_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RisksServer).List(ctx, req.(*RiskFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Risks_ServiceDesc is the grpc.ServiceDesc for Risks service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Risks_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Risks",
+ HandlerType: (*RisksServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Risks_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "risk.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.go b/proto/platform/tenant/v1/sbom.platform.pb.go
new file mode 100644
index 00000000..cd078fb8
--- /dev/null
+++ b/proto/platform/tenant/v1/sbom.platform.pb.go
@@ -0,0 +1,1058 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: sbom.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+// Type
+type Sbom2_Source int32
+
+const (
+ Sbom2_UNKNOWN Sbom2_Source = 0
+ Sbom2_INGESTED Sbom2_Source = 1
+ Sbom2_GENERATED Sbom2_Source = 2
+)
+
+// Enum value maps for Sbom2_Source.
+var (
+ Sbom2_Source_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "INGESTED",
+ 2: "GENERATED",
+ }
+ Sbom2_Source_value = map[string]int32{
+ "UNKNOWN": 0,
+ "INGESTED": 1,
+ "GENERATED": 2,
+ }
+)
+
+func (x Sbom2_Source) Enum() *Sbom2_Source {
+ p := new(Sbom2_Source)
+ *p = x
+ return p
+}
+
+func (x Sbom2_Source) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Sbom2_Source) Descriptor() protoreflect.EnumDescriptor {
+ return file_sbom_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (Sbom2_Source) Type() protoreflect.EnumType {
+ return &file_sbom_platform_proto_enumTypes[0]
+}
+
+func (x Sbom2_Source) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Sbom2_Source.Descriptor instead.
+func (Sbom2_Source) EnumDescriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+type ComponentGraph_Edge_Type int32
+
+const (
+ ComponentGraph_Edge_UNKNOWN ComponentGraph_Edge_Type = 0
+ ComponentGraph_Edge_DESCRIBES ComponentGraph_Edge_Type = 1
+ ComponentGraph_Edge_CONTAINS ComponentGraph_Edge_Type = 2
+ ComponentGraph_Edge_DEPENDS_ON ComponentGraph_Edge_Type = 3
+ ComponentGraph_Edge_GENERATED_FROM ComponentGraph_Edge_Type = 4 // and so on...; for inspiration, see https://spdx.github.io/spdx-spec/v2.3/relationships-between-SPDX-elements/
+)
+
+// Enum value maps for ComponentGraph_Edge_Type.
+var (
+ ComponentGraph_Edge_Type_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "DESCRIBES",
+ 2: "CONTAINS",
+ 3: "DEPENDS_ON",
+ 4: "GENERATED_FROM",
+ }
+ ComponentGraph_Edge_Type_value = map[string]int32{
+ "UNKNOWN": 0,
+ "DESCRIBES": 1,
+ "CONTAINS": 2,
+ "DEPENDS_ON": 3,
+ "GENERATED_FROM": 4,
+ }
+)
+
+func (x ComponentGraph_Edge_Type) Enum() *ComponentGraph_Edge_Type {
+ p := new(ComponentGraph_Edge_Type)
+ *p = x
+ return p
+}
+
+func (x ComponentGraph_Edge_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ComponentGraph_Edge_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_sbom_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (ComponentGraph_Edge_Type) Type() protoreflect.EnumType {
+ return &file_sbom_platform_proto_enumTypes[1]
+}
+
+func (x ComponentGraph_Edge_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ComponentGraph_Edge_Type.Descriptor instead.
+func (ComponentGraph_Edge_Type) EnumDescriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{1, 1, 0}
+}
+
+// Sbom represents a normalized SBOM that we have ingested into our datastore.
+// They are linked to Signatures via ID, as in they are 'children' of Signatures
+// There can be multiple of these that we keep.
+type Sbom2 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Sbom UIDP at which this Sbom resides in the hierarchy.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // raw_sbom may or may not be useful in the long term, but for now to make
+ // progress on this, we'll just yolo and serialize it here.
+ RawSbom []byte `protobuf:"bytes,2,opt,name=raw_sbom,json=rawSbom,proto3" json:"raw_sbom,omitempty"`
+ Graph *ComponentGraph `protobuf:"bytes,3,opt,name=graph,proto3" json:"graph,omitempty"`
+ // last_seen tracks the timestamp at which this sbom was last seen.
+ // TODO(vaikas): Does this really make any sense?
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // tool holds the name of the tool that produced the SBOM.
+ Tool string `protobuf:"bytes,5,opt,name=tool,proto3" json:"tool,omitempty"`
+ // format holds whether the SBOM is SPDX, CycloneDX, or other.
+ Format string `protobuf:"bytes,6,opt,name=format,proto3" json:"format,omitempty"`
+ // generated_at holds when the SBOM was generated.
+ GeneratedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=generated_at,json=generatedAt,proto3" json:"generated_at,omitempty"`
+ // authors is zero or more authors concatenated.
+ Authors string `protobuf:"bytes,8,opt,name=authors,proto3" json:"authors,omitempty"`
+ // source is where the SBOM came from. For example, we want to know if sbom
+ // was generated by us, or ingested.
+ Source Sbom2_Source `protobuf:"varint,9,opt,name=source,proto3,enum=chainguard.platform.tenant.Sbom2_Source" json:"source,omitempty"`
+ // Name of the Sbom.
+ Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"`
+ // Short description of the Sbom
+ Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"`
+ // digest of the SBOM when ingested
+ Digest *string `protobuf:"bytes,12,opt,name=digest,proto3,oneof" json:"digest,omitempty"`
+}
+
+func (x *Sbom2) Reset() {
+ *x = Sbom2{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Sbom2) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sbom2) ProtoMessage() {}
+
+func (x *Sbom2) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Sbom2.ProtoReflect.Descriptor instead.
+func (*Sbom2) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Sbom2) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Sbom2) GetRawSbom() []byte {
+ if x != nil {
+ return x.RawSbom
+ }
+ return nil
+}
+
+func (x *Sbom2) GetGraph() *ComponentGraph {
+ if x != nil {
+ return x.Graph
+ }
+ return nil
+}
+
+func (x *Sbom2) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Sbom2) GetTool() string {
+ if x != nil {
+ return x.Tool
+ }
+ return ""
+}
+
+func (x *Sbom2) GetFormat() string {
+ if x != nil {
+ return x.Format
+ }
+ return ""
+}
+
+func (x *Sbom2) GetGeneratedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.GeneratedAt
+ }
+ return nil
+}
+
+func (x *Sbom2) GetAuthors() string {
+ if x != nil {
+ return x.Authors
+ }
+ return ""
+}
+
+func (x *Sbom2) GetSource() Sbom2_Source {
+ if x != nil {
+ return x.Source
+ }
+ return Sbom2_UNKNOWN
+}
+
+func (x *Sbom2) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Sbom2) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Sbom2) GetDigest() string {
+ if x != nil && x.Digest != nil {
+ return *x.Digest
+ }
+ return ""
+}
+
+type ComponentGraph struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Nodes []*ComponentGraph_Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
+ Edges []*ComponentGraph_Edge `protobuf:"bytes,2,rep,name=edges,proto3" json:"edges,omitempty"`
+}
+
+func (x *ComponentGraph) Reset() {
+ *x = ComponentGraph{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ComponentGraph) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComponentGraph) ProtoMessage() {}
+
+func (x *ComponentGraph) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComponentGraph.ProtoReflect.Descriptor instead.
+func (*ComponentGraph) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ComponentGraph) GetNodes() []*ComponentGraph_Node {
+ if x != nil {
+ return x.Nodes
+ }
+ return nil
+}
+
+func (x *ComponentGraph) GetEdges() []*ComponentGraph_Edge {
+ if x != nil {
+ return x.Edges
+ }
+ return nil
+}
+
+type Package2 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ License string `protobuf:"bytes,4,opt,name=license,proto3" json:"license,omitempty"`
+ Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
+ Purl string `protobuf:"bytes,6,opt,name=purl,proto3" json:"purl,omitempty"`
+}
+
+func (x *Package2) Reset() {
+ *x = Package2{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Package2) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Package2) ProtoMessage() {}
+
+func (x *Package2) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Package2.ProtoReflect.Descriptor instead.
+func (*Package2) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Package2) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Package2) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Package2) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *Package2) GetLicense() string {
+ if x != nil {
+ return x.License
+ }
+ return ""
+}
+
+func (x *Package2) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Package2) GetPurl() string {
+ if x != nil {
+ return x.Purl
+ }
+ return ""
+}
+
+type File2 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Types []string `protobuf:"bytes,4,rep,name=types,proto3" json:"types,omitempty"`
+}
+
+func (x *File2) Reset() {
+ *x = File2{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *File2) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*File2) ProtoMessage() {}
+
+func (x *File2) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use File2.ProtoReflect.Descriptor instead.
+func (*File2) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *File2) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *File2) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *File2) GetTypes() []string {
+ if x != nil {
+ return x.Types
+ }
+ return nil
+}
+
+type Sbom2List struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Sbom2 `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *Sbom2List) Reset() {
+ *x = Sbom2List{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Sbom2List) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sbom2List) ProtoMessage() {}
+
+func (x *Sbom2List) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Sbom2List.ProtoReflect.Descriptor instead.
+func (*Sbom2List) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Sbom2List) GetItems() []*Sbom2 {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type Sbom2Filter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // include_raw_sbom is a flag to return the raw sbom field in the record.
+ IncludeRawSbom bool `protobuf:"varint,4,opt,name=include_raw_sbom,json=includeRawSbom,proto3" json:"include_raw_sbom,omitempty"`
+}
+
+func (x *Sbom2Filter) Reset() {
+ *x = Sbom2Filter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Sbom2Filter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Sbom2Filter) ProtoMessage() {}
+
+func (x *Sbom2Filter) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Sbom2Filter.ProtoReflect.Descriptor instead.
+func (*Sbom2Filter) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Sbom2Filter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Sbom2Filter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *Sbom2Filter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *Sbom2Filter) GetIncludeRawSbom() bool {
+ if x != nil {
+ return x.IncludeRawSbom
+ }
+ return false
+}
+
+type ComponentGraph_Node struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to TypedNode:
+ //
+ // *ComponentGraph_Node_Package
+ // *ComponentGraph_Node_File
+ TypedNode isComponentGraph_Node_TypedNode `protobuf_oneof:"typed_node"`
+}
+
+func (x *ComponentGraph_Node) Reset() {
+ *x = ComponentGraph_Node{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ComponentGraph_Node) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComponentGraph_Node) ProtoMessage() {}
+
+func (x *ComponentGraph_Node) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComponentGraph_Node.ProtoReflect.Descriptor instead.
+func (*ComponentGraph_Node) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (m *ComponentGraph_Node) GetTypedNode() isComponentGraph_Node_TypedNode {
+ if m != nil {
+ return m.TypedNode
+ }
+ return nil
+}
+
+func (x *ComponentGraph_Node) GetPackage() *Package2 {
+ if x, ok := x.GetTypedNode().(*ComponentGraph_Node_Package); ok {
+ return x.Package
+ }
+ return nil
+}
+
+func (x *ComponentGraph_Node) GetFile() *File2 {
+ if x, ok := x.GetTypedNode().(*ComponentGraph_Node_File); ok {
+ return x.File
+ }
+ return nil
+}
+
+type isComponentGraph_Node_TypedNode interface {
+ isComponentGraph_Node_TypedNode()
+}
+
+type ComponentGraph_Node_Package struct {
+ Package *Package2 `protobuf:"bytes,1,opt,name=package,proto3,oneof"`
+}
+
+type ComponentGraph_Node_File struct {
+ File *File2 `protobuf:"bytes,2,opt,name=file,proto3,oneof"`
+}
+
+func (*ComponentGraph_Node_Package) isComponentGraph_Node_TypedNode() {}
+
+func (*ComponentGraph_Node_File) isComponentGraph_Node_TypedNode() {}
+
+type ComponentGraph_Edge struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ SubjectId string `protobuf:"bytes,1,opt,name=subject_id,json=subjectId,proto3" json:"subject_id,omitempty"`
+ PredicateId string `protobuf:"bytes,2,opt,name=predicate_id,json=predicateId,proto3" json:"predicate_id,omitempty"`
+ Type ComponentGraph_Edge_Type `protobuf:"varint,3,opt,name=type,proto3,enum=chainguard.platform.tenant.ComponentGraph_Edge_Type" json:"type,omitempty"`
+}
+
+func (x *ComponentGraph_Edge) Reset() {
+ *x = ComponentGraph_Edge{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_sbom_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ComponentGraph_Edge) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComponentGraph_Edge) ProtoMessage() {}
+
+func (x *ComponentGraph_Edge) ProtoReflect() protoreflect.Message {
+ mi := &file_sbom_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComponentGraph_Edge.ProtoReflect.Descriptor instead.
+func (*ComponentGraph_Edge) Descriptor() ([]byte, []int) {
+ return file_sbom_platform_proto_rawDescGZIP(), []int{1, 1}
+}
+
+func (x *ComponentGraph_Edge) GetSubjectId() string {
+ if x != nil {
+ return x.SubjectId
+ }
+ return ""
+}
+
+func (x *ComponentGraph_Edge) GetPredicateId() string {
+ if x != nil {
+ return x.PredicateId
+ }
+ return ""
+}
+
+func (x *ComponentGraph_Edge) GetType() ComponentGraph_Edge_Type {
+ if x != nil {
+ return x.Type
+ }
+ return ComponentGraph_Edge_UNKNOWN
+}
+
+var File_sbom_platform_proto protoreflect.FileDescriptor
+
+var file_sbom_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
+ 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x22, 0x86, 0x04, 0x0a, 0x05, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x72, 0x61, 0x77, 0x5f, 0x73, 0x62, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
+ 0x72, 0x61, 0x77, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61,
+ 0x70, 0x68, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65,
+ 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3d,
+ 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a,
+ 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x22, 0x32, 0x0a, 0x06,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
+ 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02,
+ 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x9b, 0x04, 0x0a, 0x0e,
+ 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x45,
+ 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
+ 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05,
+ 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68,
+ 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x1a, 0x8f, 0x01, 0x0a,
+ 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32, 0x48, 0x00, 0x52, 0x07,
+ 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x32, 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65,
+ 0x42, 0x0c, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x1a, 0xe8,
+ 0x01, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6a, 0x65,
+ 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62,
+ 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63,
+ 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72,
+ 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72,
+ 0x61, 0x70, 0x68, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
+ 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x53, 0x43,
+ 0x52, 0x49, 0x42, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41,
+ 0x49, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x53,
+ 0x5f, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54,
+ 0x45, 0x44, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x04, 0x22, 0x98, 0x01, 0x0a, 0x08, 0x50, 0x61,
+ 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x20,
+ 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x70, 0x75, 0x72, 0x6c, 0x22, 0x47, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x32, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x44, 0x0a,
+ 0x09, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
+ 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
+ 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x28,
+ 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x62,
+ 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x52, 0x61, 0x77, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x6f, 0x0a, 0x05, 0x53, 0x62, 0x6f, 0x6d,
+ 0x73, 0x12, 0x66, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x02, 0x8a, 0x05, 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64,
+ 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
+}
+
+var (
+ file_sbom_platform_proto_rawDescOnce sync.Once
+ file_sbom_platform_proto_rawDescData = file_sbom_platform_proto_rawDesc
+)
+
+func file_sbom_platform_proto_rawDescGZIP() []byte {
+ file_sbom_platform_proto_rawDescOnce.Do(func() {
+ file_sbom_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_sbom_platform_proto_rawDescData)
+ })
+ return file_sbom_platform_proto_rawDescData
+}
+
+var file_sbom_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_sbom_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_sbom_platform_proto_goTypes = []interface{}{
+ (Sbom2_Source)(0), // 0: chainguard.platform.tenant.Sbom2.Source
+ (ComponentGraph_Edge_Type)(0), // 1: chainguard.platform.tenant.ComponentGraph.Edge.Type
+ (*Sbom2)(nil), // 2: chainguard.platform.tenant.Sbom2
+ (*ComponentGraph)(nil), // 3: chainguard.platform.tenant.ComponentGraph
+ (*Package2)(nil), // 4: chainguard.platform.tenant.Package2
+ (*File2)(nil), // 5: chainguard.platform.tenant.File2
+ (*Sbom2List)(nil), // 6: chainguard.platform.tenant.Sbom2List
+ (*Sbom2Filter)(nil), // 7: chainguard.platform.tenant.Sbom2Filter
+ (*ComponentGraph_Node)(nil), // 8: chainguard.platform.tenant.ComponentGraph.Node
+ (*ComponentGraph_Edge)(nil), // 9: chainguard.platform.tenant.ComponentGraph.Edge
+ (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 11: chainguard.platform.common.UIDPFilter
+}
+var file_sbom_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.tenant.Sbom2.graph:type_name -> chainguard.platform.tenant.ComponentGraph
+ 10, // 1: chainguard.platform.tenant.Sbom2.last_seen:type_name -> google.protobuf.Timestamp
+ 10, // 2: chainguard.platform.tenant.Sbom2.generated_at:type_name -> google.protobuf.Timestamp
+ 0, // 3: chainguard.platform.tenant.Sbom2.source:type_name -> chainguard.platform.tenant.Sbom2.Source
+ 8, // 4: chainguard.platform.tenant.ComponentGraph.nodes:type_name -> chainguard.platform.tenant.ComponentGraph.Node
+ 9, // 5: chainguard.platform.tenant.ComponentGraph.edges:type_name -> chainguard.platform.tenant.ComponentGraph.Edge
+ 2, // 6: chainguard.platform.tenant.Sbom2List.items:type_name -> chainguard.platform.tenant.Sbom2
+ 11, // 7: chainguard.platform.tenant.Sbom2Filter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 10, // 8: chainguard.platform.tenant.Sbom2Filter.active_since:type_name -> google.protobuf.Timestamp
+ 4, // 9: chainguard.platform.tenant.ComponentGraph.Node.package:type_name -> chainguard.platform.tenant.Package2
+ 5, // 10: chainguard.platform.tenant.ComponentGraph.Node.file:type_name -> chainguard.platform.tenant.File2
+ 1, // 11: chainguard.platform.tenant.ComponentGraph.Edge.type:type_name -> chainguard.platform.tenant.ComponentGraph.Edge.Type
+ 7, // 12: chainguard.platform.tenant.Sboms.List:input_type -> chainguard.platform.tenant.Sbom2Filter
+ 6, // 13: chainguard.platform.tenant.Sboms.List:output_type -> chainguard.platform.tenant.Sbom2List
+ 13, // [13:14] is the sub-list for method output_type
+ 12, // [12:13] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
+}
+
+func init() { file_sbom_platform_proto_init() }
+func file_sbom_platform_proto_init() {
+ if File_sbom_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_sbom_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Sbom2); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ComponentGraph); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Package2); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*File2); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Sbom2List); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Sbom2Filter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ComponentGraph_Node); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_sbom_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ComponentGraph_Edge); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_sbom_platform_proto_msgTypes[0].OneofWrappers = []interface{}{}
+ file_sbom_platform_proto_msgTypes[6].OneofWrappers = []interface{}{
+ (*ComponentGraph_Node_Package)(nil),
+ (*ComponentGraph_Node_File)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_sbom_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 8,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_sbom_platform_proto_goTypes,
+ DependencyIndexes: file_sbom_platform_proto_depIdxs,
+ EnumInfos: file_sbom_platform_proto_enumTypes,
+ MessageInfos: file_sbom_platform_proto_msgTypes,
+ }.Build()
+ File_sbom_platform_proto = out.File
+ file_sbom_platform_proto_rawDesc = nil
+ file_sbom_platform_proto_goTypes = nil
+ file_sbom_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.gw.go b/proto/platform/tenant/v1/sbom.platform.pb.gw.go
new file mode 100644
index 00000000..9b2cab72
--- /dev/null
+++ b/proto/platform/tenant/v1/sbom.platform.pb.gw.go
@@ -0,0 +1,169 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: sbom.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+func request_Sboms_List_0(ctx context.Context, marshaler runtime.Marshaler, client SbomsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Sbom2Filter
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Sboms_List_0(ctx context.Context, marshaler runtime.Marshaler, server SbomsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq Sbom2Filter
+ var metadata runtime.ServerMetadata
+
+ newReader, berr := utilities.IOReaderFactory(req.Body)
+ if berr != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
+ }
+ if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterSbomsHandlerServer registers the http handlers for service Sboms to "mux".
+// UnaryRPC :call SbomsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSbomsHandlerFromEndpoint instead.
+func RegisterSbomsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SbomsServer) error {
+
+ mux.Handle("POST", pattern_Sboms_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Sboms/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Sboms/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Sboms_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Sboms_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterSbomsHandlerFromEndpoint is same as RegisterSbomsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterSbomsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterSbomsHandler(ctx, mux, conn)
+}
+
+// RegisterSbomsHandler registers the http handlers for service Sboms to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterSbomsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterSbomsHandlerClient(ctx, mux, NewSbomsClient(conn))
+}
+
+// RegisterSbomsHandlerClient registers the http handlers for service Sboms
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SbomsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SbomsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "SbomsClient" to call the correct interceptors.
+func RegisterSbomsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SbomsClient) error {
+
+ mux.Handle("POST", pattern_Sboms_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Sboms/List", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Sboms/List"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Sboms_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Sboms_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Sboms_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Sboms", "List"}, ""))
+)
+
+var (
+ forward_Sboms_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/sbom.platform.proto b/proto/platform/tenant/v1/sbom.platform.proto
new file mode 100644
index 00000000..d1bf64dc
--- /dev/null
+++ b/proto/platform/tenant/v1/sbom.platform.proto
@@ -0,0 +1,131 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantSbomProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Sboms {
+ rpc List(Sbom2Filter) returns (Sbom2List) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_SBOMS_LIST]
+ unscoped: true
+ }
+ };
+ }
+ }
+
+// Sbom represents a normalized SBOM that we have ingested into our datastore.
+// They are linked to Signatures via ID, as in they are 'children' of Signatures
+// There can be multiple of these that we keep.
+message Sbom2 {
+ // id, The Sbom UIDP at which this Sbom resides in the hierarchy.
+ string id = 1;
+
+ // raw_sbom may or may not be useful in the long term, but for now to make
+ // progress on this, we'll just yolo and serialize it here.
+ bytes raw_sbom = 2;
+
+ ComponentGraph graph = 3;
+
+ // last_seen tracks the timestamp at which this sbom was last seen.
+ // TODO(vaikas): Does this really make any sense?
+ google.protobuf.Timestamp last_seen = 4;
+
+ // tool holds the name of the tool that produced the SBOM.
+ string tool = 5;
+ // format holds whether the SBOM is SPDX, CycloneDX, or other.
+ string format = 6;
+ // generated_at holds when the SBOM was generated.
+ google.protobuf.Timestamp generated_at = 7;
+ // authors is zero or more authors concatenated.
+ string authors = 8;
+
+ // source is where the SBOM came from. For example, we want to know if sbom
+ // was generated by us, or ingested.
+ Source source = 9;
+
+ // Type
+ enum Source {
+ UNKNOWN = 0;
+ INGESTED = 1;
+ GENERATED = 2;
+ }
+ // Name of the Sbom.
+ string name = 10;
+
+ // Short description of the Sbom
+ string description = 11;
+
+ // digest of the SBOM when ingested
+ optional string digest = 12;
+}
+
+message ComponentGraph {
+ repeated Node nodes = 1;
+ repeated Edge edges = 2;
+
+ message Node {
+ oneof typed_node {
+ Package2 package = 1;
+ File2 file = 2;
+ }
+ }
+
+ message Edge {
+ string subject_id = 1;
+ string predicate_id = 2;
+ Type type = 3;
+
+ enum Type {
+ UNKNOWN = 0;
+ DESCRIBES = 1;
+ CONTAINS = 2;
+ DEPENDS_ON = 3;
+ GENERATED_FROM = 4;
+ // and so on...; for inspiration, see https://spdx.github.io/spdx-spec/v2.3/relationships-between-SPDX-elements/
+ }
+ }
+}
+
+message Package2 {
+ string id = 1;
+ string name = 2;
+ string version = 3;
+ string license = 4;
+ string description = 5;
+ string purl = 6;
+}
+
+message File2 {
+ // 3 was used for single type.
+ reserved 3;
+
+ string id = 1;
+ string name = 2;
+ repeated string types = 4;
+}
+
+message Sbom2List {
+ repeated Sbom2 items = 1;
+}
+
+message Sbom2Filter {
+ // id is the exact UID of the record.
+ string id = 1;
+
+ chainguard.platform.common.UIDPFilter uidp = 2;
+
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ google.protobuf.Timestamp active_since = 3;
+ // include_raw_sbom is a flag to return the raw sbom field in the record.
+ bool include_raw_sbom = 4;
+}
diff --git a/proto/platform/tenant/v1/sbom.platform_grpc.pb.go b/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
new file mode 100644
index 00000000..4f8ecc26
--- /dev/null
+++ b/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: sbom.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Sboms_List_FullMethodName = "/chainguard.platform.tenant.Sboms/List"
+)
+
+// SbomsClient is the client API for Sboms service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SbomsClient interface {
+ List(ctx context.Context, in *Sbom2Filter, opts ...grpc.CallOption) (*Sbom2List, error)
+}
+
+type sbomsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSbomsClient(cc grpc.ClientConnInterface) SbomsClient {
+ return &sbomsClient{cc}
+}
+
+func (c *sbomsClient) List(ctx context.Context, in *Sbom2Filter, opts ...grpc.CallOption) (*Sbom2List, error) {
+ out := new(Sbom2List)
+ err := c.cc.Invoke(ctx, Sboms_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SbomsServer is the server API for Sboms service.
+// All implementations must embed UnimplementedSbomsServer
+// for forward compatibility
+type SbomsServer interface {
+ List(context.Context, *Sbom2Filter) (*Sbom2List, error)
+ mustEmbedUnimplementedSbomsServer()
+}
+
+// UnimplementedSbomsServer must be embedded to have forward compatible implementations.
+type UnimplementedSbomsServer struct {
+}
+
+func (UnimplementedSbomsServer) List(context.Context, *Sbom2Filter) (*Sbom2List, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedSbomsServer) mustEmbedUnimplementedSbomsServer() {}
+
+// UnsafeSbomsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SbomsServer will
+// result in compilation errors.
+type UnsafeSbomsServer interface {
+ mustEmbedUnimplementedSbomsServer()
+}
+
+func RegisterSbomsServer(s grpc.ServiceRegistrar, srv SbomsServer) {
+ s.RegisterService(&Sboms_ServiceDesc, srv)
+}
+
+func _Sboms_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(Sbom2Filter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SbomsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Sboms_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SbomsServer).List(ctx, req.(*Sbom2Filter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Sboms_ServiceDesc is the grpc.ServiceDesc for Sboms service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Sboms_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Sboms",
+ HandlerType: (*SbomsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Sboms_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "sbom.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/signature.platform.pb.go b/proto/platform/tenant/v1/signature.platform.pb.go
new file mode 100644
index 00000000..894186c0
--- /dev/null
+++ b/proto/platform/tenant/v1/signature.platform.pb.go
@@ -0,0 +1,731 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: signature.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Signature struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Signature UIDP at which this Signature resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the Signature.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this Signature.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // last_seen tracks the timestamp at which this signature was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // predicate_type is an optional field that captures the type of signed
+ // metadata this signature has signed.
+ // - For simple signatures (e.g. directly signed artifact), this will
+ // be empty to represent the "null claim".
+ // - For signed claims (e.g. attestations), this will hold the in-toto
+ // predicate type of the signed claim.
+ PredicateType string `protobuf:"bytes,5,opt,name=predicate_type,json=predicateType,proto3" json:"predicate_type,omitempty"`
+ // Types that are assignable to Kind:
+ //
+ // *Signature_None
+ // *Signature_Keyless_
+ // *Signature_Key_
+ Kind isSignature_Kind `protobuf_oneof:"kind"`
+}
+
+func (x *Signature) Reset() {
+ *x = Signature{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Signature) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Signature) ProtoMessage() {}
+
+func (x *Signature) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Signature.ProtoReflect.Descriptor instead.
+func (*Signature) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Signature) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Signature) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Signature) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Signature) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Signature) GetPredicateType() string {
+ if x != nil {
+ return x.PredicateType
+ }
+ return ""
+}
+
+func (m *Signature) GetKind() isSignature_Kind {
+ if m != nil {
+ return m.Kind
+ }
+ return nil
+}
+
+func (x *Signature) GetNone() *emptypb.Empty {
+ if x, ok := x.GetKind().(*Signature_None); ok {
+ return x.None
+ }
+ return nil
+}
+
+func (x *Signature) GetKeyless() *Signature_Keyless {
+ if x, ok := x.GetKind().(*Signature_Keyless_); ok {
+ return x.Keyless
+ }
+ return nil
+}
+
+func (x *Signature) GetKey() *Signature_Key {
+ if x, ok := x.GetKind().(*Signature_Key_); ok {
+ return x.Key
+ }
+ return nil
+}
+
+type isSignature_Kind interface {
+ isSignature_Kind()
+}
+
+type Signature_None struct {
+ // none is the kind of signature that is attached when a policy
+ // designates an image as "statically" trusted.
+ None *emptypb.Empty `protobuf:"bytes,10,opt,name=none,proto3,oneof"`
+}
+
+type Signature_Keyless_ struct {
+ // keyless is the kind of signature that is attached when a signature
+ // was produced via a "keyless" flow.
+ Keyless *Signature_Keyless `protobuf:"bytes,11,opt,name=keyless,proto3,oneof"`
+}
+
+type Signature_Key_ struct {
+ // key is the kind of signature that is attached when a signature
+ // was produced via a static key pair.
+ Key *Signature_Key `protobuf:"bytes,12,opt,name=key,proto3,oneof"`
+}
+
+func (*Signature_None) isSignature_Kind() {}
+
+func (*Signature_Keyless_) isSignature_Kind() {}
+
+func (*Signature_Key_) isSignature_Kind() {}
+
+type SignatureList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Signature `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *SignatureList) Reset() {
+ *x = SignatureList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SignatureList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SignatureList) ProtoMessage() {}
+
+func (x *SignatureList) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SignatureList.ProtoReflect.Descriptor instead.
+func (*SignatureList) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SignatureList) GetItems() []*Signature {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type SignatureFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ PredicateType *string `protobuf:"bytes,4,opt,name=predicate_type,json=predicateType,proto3,oneof" json:"predicate_type,omitempty"`
+}
+
+func (x *SignatureFilter) Reset() {
+ *x = SignatureFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SignatureFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SignatureFilter) ProtoMessage() {}
+
+func (x *SignatureFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SignatureFilter.ProtoReflect.Descriptor instead.
+func (*SignatureFilter) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SignatureFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *SignatureFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *SignatureFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SignatureFilter) GetPredicateType() string {
+ if x != nil && x.PredicateType != nil {
+ return *x.PredicateType
+ }
+ return ""
+}
+
+type Signature_Keyless struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
+ Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
+ // TODO: Consider making this a oneof when other providers
+ // start producing interesting claims.
+ Github *Signature_Keyless_Github `protobuf:"bytes,3,opt,name=github,proto3" json:"github,omitempty"`
+}
+
+func (x *Signature_Keyless) Reset() {
+ *x = Signature_Keyless{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Signature_Keyless) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Signature_Keyless) ProtoMessage() {}
+
+func (x *Signature_Keyless) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Signature_Keyless.ProtoReflect.Descriptor instead.
+func (*Signature_Keyless) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *Signature_Keyless) GetIssuer() string {
+ if x != nil {
+ return x.Issuer
+ }
+ return ""
+}
+
+func (x *Signature_Keyless) GetSubject() string {
+ if x != nil {
+ return x.Subject
+ }
+ return ""
+}
+
+func (x *Signature_Keyless) GetGithub() *Signature_Keyless_Github {
+ if x != nil {
+ return x.Github
+ }
+ return nil
+}
+
+type Signature_Key struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *Signature_Key) Reset() {
+ *x = Signature_Key{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Signature_Key) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Signature_Key) ProtoMessage() {}
+
+func (x *Signature_Key) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Signature_Key.ProtoReflect.Descriptor instead.
+func (*Signature_Key) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{0, 1}
+}
+
+type Signature_Keyless_Github struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // OID: 1.3.6.1.4.1.57264.1.2
+ WorkflowTrigger string `protobuf:"bytes,1,opt,name=workflow_trigger,json=workflowTrigger,proto3" json:"workflow_trigger,omitempty"`
+ // OID: 1.3.6.1.4.1.57264.1.3
+ WorkflowSha string `protobuf:"bytes,2,opt,name=workflow_sha,json=workflowSha,proto3" json:"workflow_sha,omitempty"`
+ // OID: 1.3.6.1.4.1.57264.1.4
+ WorkflowName string `protobuf:"bytes,3,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
+ // OID: 1.3.6.1.4.1.57264.1.5
+ WorkflowRepo string `protobuf:"bytes,4,opt,name=workflow_repo,json=workflowRepo,proto3" json:"workflow_repo,omitempty"`
+ // OID: 1.3.6.1.4.1.57264.1.6
+ WorkflowRef string `protobuf:"bytes,5,opt,name=workflow_ref,json=workflowRef,proto3" json:"workflow_ref,omitempty"`
+}
+
+func (x *Signature_Keyless_Github) Reset() {
+ *x = Signature_Keyless_Github{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_signature_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Signature_Keyless_Github) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Signature_Keyless_Github) ProtoMessage() {}
+
+func (x *Signature_Keyless_Github) ProtoReflect() protoreflect.Message {
+ mi := &file_signature_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Signature_Keyless_Github.ProtoReflect.Descriptor instead.
+func (*Signature_Keyless_Github) Descriptor() ([]byte, []int) {
+ return file_signature_platform_proto_rawDescGZIP(), []int{0, 0, 0}
+}
+
+func (x *Signature_Keyless_Github) GetWorkflowTrigger() string {
+ if x != nil {
+ return x.WorkflowTrigger
+ }
+ return ""
+}
+
+func (x *Signature_Keyless_Github) GetWorkflowSha() string {
+ if x != nil {
+ return x.WorkflowSha
+ }
+ return ""
+}
+
+func (x *Signature_Keyless_Github) GetWorkflowName() string {
+ if x != nil {
+ return x.WorkflowName
+ }
+ return ""
+}
+
+func (x *Signature_Keyless_Github) GetWorkflowRepo() string {
+ if x != nil {
+ return x.WorkflowRepo
+ }
+ return ""
+}
+
+func (x *Signature_Keyless_Github) GetWorkflowRef() string {
+ if x != nil {
+ return x.WorkflowRef
+ }
+ return ""
+}
+
+var File_signature_platform_proto protoreflect.FileDescriptor
+
+var file_signature_platform_proto_rawDesc = []byte{
+ 0x0a, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
+ 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
+ 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x22, 0xca, 0x05, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73,
+ 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
+ 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61,
+ 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04,
+ 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79,
+ 0x6c, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x12,
+ 0x3d, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
+ 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0xcf,
+ 0x02, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73,
+ 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75,
+ 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4c, 0x0a, 0x06,
+ 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
+ 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x47, 0x69, 0x74, 0x68,
+ 0x75, 0x62, 0x52, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x1a, 0xc3, 0x01, 0x0a, 0x06, 0x47,
+ 0x69, 0x74, 0x68, 0x75, 0x62, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
+ 0x77, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x68, 0x61,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
+ 0x53, 0x68, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x21, 0x0a,
+ 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x66,
+ 0x1a, 0x05, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
+ 0x4c, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67,
+ 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xdf, 0x01,
+ 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
+ 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x3d, 0x0a,
+ 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64,
+ 0x69, 0x63, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f,
+ 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32,
+ 0x9a, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x8b,
+ 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xef, 0x04, 0x10, 0x01, 0x42, 0x74, 0x0a, 0x25,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
+ 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
+ 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_signature_platform_proto_rawDescOnce sync.Once
+ file_signature_platform_proto_rawDescData = file_signature_platform_proto_rawDesc
+)
+
+func file_signature_platform_proto_rawDescGZIP() []byte {
+ file_signature_platform_proto_rawDescOnce.Do(func() {
+ file_signature_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_signature_platform_proto_rawDescData)
+ })
+ return file_signature_platform_proto_rawDescData
+}
+
+var file_signature_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_signature_platform_proto_goTypes = []interface{}{
+ (*Signature)(nil), // 0: chainguard.platform.tenant.Signature
+ (*SignatureList)(nil), // 1: chainguard.platform.tenant.SignatureList
+ (*SignatureFilter)(nil), // 2: chainguard.platform.tenant.SignatureFilter
+ (*Signature_Keyless)(nil), // 3: chainguard.platform.tenant.Signature.Keyless
+ (*Signature_Key)(nil), // 4: chainguard.platform.tenant.Signature.Key
+ (*Signature_Keyless_Github)(nil), // 5: chainguard.platform.tenant.Signature.Keyless.Github
+ (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp
+ (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
+ (*v1.UIDPFilter)(nil), // 8: chainguard.platform.common.UIDPFilter
+}
+var file_signature_platform_proto_depIdxs = []int32{
+ 6, // 0: chainguard.platform.tenant.Signature.last_seen:type_name -> google.protobuf.Timestamp
+ 7, // 1: chainguard.platform.tenant.Signature.none:type_name -> google.protobuf.Empty
+ 3, // 2: chainguard.platform.tenant.Signature.keyless:type_name -> chainguard.platform.tenant.Signature.Keyless
+ 4, // 3: chainguard.platform.tenant.Signature.key:type_name -> chainguard.platform.tenant.Signature.Key
+ 0, // 4: chainguard.platform.tenant.SignatureList.items:type_name -> chainguard.platform.tenant.Signature
+ 8, // 5: chainguard.platform.tenant.SignatureFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 6, // 6: chainguard.platform.tenant.SignatureFilter.active_since:type_name -> google.protobuf.Timestamp
+ 5, // 7: chainguard.platform.tenant.Signature.Keyless.github:type_name -> chainguard.platform.tenant.Signature.Keyless.Github
+ 2, // 8: chainguard.platform.tenant.Signatures.List:input_type -> chainguard.platform.tenant.SignatureFilter
+ 1, // 9: chainguard.platform.tenant.Signatures.List:output_type -> chainguard.platform.tenant.SignatureList
+ 9, // [9:10] is the sub-list for method output_type
+ 8, // [8:9] 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_signature_platform_proto_init() }
+func file_signature_platform_proto_init() {
+ if File_signature_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_signature_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Signature); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_signature_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SignatureList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_signature_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SignatureFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_signature_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Signature_Keyless); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_signature_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Signature_Key); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_signature_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Signature_Keyless_Github); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_signature_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
+ (*Signature_None)(nil),
+ (*Signature_Keyless_)(nil),
+ (*Signature_Key_)(nil),
+ }
+ file_signature_platform_proto_msgTypes[2].OneofWrappers = []interface{}{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_signature_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 6,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_signature_platform_proto_goTypes,
+ DependencyIndexes: file_signature_platform_proto_depIdxs,
+ MessageInfos: file_signature_platform_proto_msgTypes,
+ }.Build()
+ File_signature_platform_proto = out.File
+ file_signature_platform_proto_rawDesc = nil
+ file_signature_platform_proto_goTypes = nil
+ file_signature_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/signature.platform.proto b/proto/platform/tenant/v1/signature.platform.proto
new file mode 100644
index 00000000..d8ab1e92
--- /dev/null
+++ b/proto/platform/tenant/v1/signature.platform.proto
@@ -0,0 +1,110 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantSignatureProto";
+
+package chainguard.platform.tenant;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Signatures {
+ rpc List(SignatureFilter) returns (SignatureList) {
+ option (google.api.http) = {
+ get: "/tenant/v1/signatures"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_RECORD_SIGNATURES_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message Signature {
+ // id, The Signature UIDP at which this Signature resides.
+ string id = 1;
+
+ // name of the Signature.
+ string name = 2;
+
+ // a short description of this Signature.
+ string description = 3;
+
+ // last_seen tracks the timestamp at which this signature was last seen.
+ google.protobuf.Timestamp last_seen = 4;
+
+ // predicate_type is an optional field that captures the type of signed
+ // metadata this signature has signed.
+ // - For simple signatures (e.g. directly signed artifact), this will
+ // be empty to represent the "null claim".
+ // - For signed claims (e.g. attestations), this will hold the in-toto
+ // predicate type of the signed claim.
+ string predicate_type = 5;
+
+ oneof kind {
+ // none is the kind of signature that is attached when a policy
+ // designates an image as "statically" trusted.
+ google.protobuf.Empty none = 10;
+
+ // keyless is the kind of signature that is attached when a signature
+ // was produced via a "keyless" flow.
+ Keyless keyless = 11;
+
+ // key is the kind of signature that is attached when a signature
+ // was produced via a static key pair.
+ Key key = 12;
+ }
+
+ message Keyless {
+ string issuer = 1;
+ string subject = 2;
+
+ // TODO: Consider making this a oneof when other providers
+ // start producing interesting claims.
+ Github github = 3;
+
+ message Github {
+ // OID: 1.3.6.1.4.1.57264.1.2
+ string workflow_trigger = 1;
+
+ // OID: 1.3.6.1.4.1.57264.1.3
+ string workflow_sha = 2;
+
+ // OID: 1.3.6.1.4.1.57264.1.4
+ string workflow_name = 3;
+
+ // OID: 1.3.6.1.4.1.57264.1.5
+ string workflow_repo = 4;
+
+ // OID: 1.3.6.1.4.1.57264.1.6
+ string workflow_ref = 5;
+ }
+ }
+
+ message Key {
+ // TODO: What useful information should we encode here?
+ }
+}
+
+message SignatureList {
+ repeated Signature items = 1;
+}
+
+message SignatureFilter {
+ chainguard.platform.common.UIDPFilter uidp = 1;
+
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ google.protobuf.Timestamp active_since = 2;
+
+ string name = 3;
+
+ optional string predicate_type = 4;
+}
diff --git a/proto/platform/tenant/v1/signature.platform_grpc.pb.go b/proto/platform/tenant/v1/signature.platform_grpc.pb.go
new file mode 100644
index 00000000..52506e8c
--- /dev/null
+++ b/proto/platform/tenant/v1/signature.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: signature.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Signatures_List_FullMethodName = "/chainguard.platform.tenant.Signatures/List"
+)
+
+// SignaturesClient is the client API for Signatures service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type SignaturesClient interface {
+ List(ctx context.Context, in *SignatureFilter, opts ...grpc.CallOption) (*SignatureList, error)
+}
+
+type signaturesClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewSignaturesClient(cc grpc.ClientConnInterface) SignaturesClient {
+ return &signaturesClient{cc}
+}
+
+func (c *signaturesClient) List(ctx context.Context, in *SignatureFilter, opts ...grpc.CallOption) (*SignatureList, error) {
+ out := new(SignatureList)
+ err := c.cc.Invoke(ctx, Signatures_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// SignaturesServer is the server API for Signatures service.
+// All implementations must embed UnimplementedSignaturesServer
+// for forward compatibility
+type SignaturesServer interface {
+ List(context.Context, *SignatureFilter) (*SignatureList, error)
+ mustEmbedUnimplementedSignaturesServer()
+}
+
+// UnimplementedSignaturesServer must be embedded to have forward compatible implementations.
+type UnimplementedSignaturesServer struct {
+}
+
+func (UnimplementedSignaturesServer) List(context.Context, *SignatureFilter) (*SignatureList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedSignaturesServer) mustEmbedUnimplementedSignaturesServer() {}
+
+// UnsafeSignaturesServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SignaturesServer will
+// result in compilation errors.
+type UnsafeSignaturesServer interface {
+ mustEmbedUnimplementedSignaturesServer()
+}
+
+func RegisterSignaturesServer(s grpc.ServiceRegistrar, srv SignaturesServer) {
+ s.RegisterService(&Signatures_ServiceDesc, srv)
+}
+
+func _Signatures_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(SignatureFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(SignaturesServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Signatures_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(SignaturesServer).List(ctx, req.(*SignatureFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Signatures_ServiceDesc is the grpc.ServiceDesc for Signatures service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Signatures_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Signatures",
+ HandlerType: (*SignaturesServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Signatures_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "signature.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/test/mock_attestations.go b/proto/platform/tenant/v1/test/mock_attestations.go
new file mode 100644
index 00000000..5ad40300
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_attestations.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.AttestationsClient = (*MockAttestationsClientt)(nil)
+
+type MockAttestationsClientt struct {
+ OnList []AttestationsOnList
+}
+
+type AttestationsOnList struct {
+ Given *tenant.AttestationFilter
+ List *tenant.AttestationList
+ Error error
+}
+
+func (m MockAttestationsClientt) List(_ context.Context, given *tenant.AttestationFilter, _ ...grpc.CallOption) (*tenant.AttestationList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
new file mode 100644
index 00000000..72625469
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_client.go
@@ -0,0 +1,81 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+type MockTenantClient struct {
+ OnClose error
+
+ ClustersClient MockClustersClient
+ RecordsClient MockRecordsClient
+ RecordContextsClient MockRecordContextsClient
+ SbomsClient MockSbomsClient
+ SignaturesClient MockSignaturesClient
+ PolicyResultsClient MockPolicyResultsClient
+ NodesClient MockNodesClient
+ NamespacesClient MockNamespacesClient
+ RisksClient MockRisksClient
+ WorkloadsClient MockWorkloadsClient
+ VulnReportsClient MockVulnReportsClient
+ AttestationClient MockAttestationsClientt
+}
+
+var _ tenant.Clients = (*MockTenantClient)(nil)
+
+func (m MockTenantClient) Clusters() tenant.ClustersClient {
+ return &m.ClustersClient
+}
+
+func (m MockTenantClient) Records() tenant.RecordsClient {
+ return &m.RecordsClient
+}
+
+func (m MockTenantClient) RecordContexts() tenant.RecordContextsClient {
+ return &m.RecordContextsClient
+}
+
+func (m MockTenantClient) Sboms() tenant.SbomsClient {
+ return &m.SbomsClient
+}
+
+func (m MockTenantClient) Risks() tenant.RisksClient {
+ return &m.RisksClient
+}
+
+func (m MockTenantClient) Signatures() tenant.SignaturesClient {
+ return &m.SignaturesClient
+}
+
+func (m MockTenantClient) PolicyResults() tenant.PolicyResultsClient {
+ return &m.PolicyResultsClient
+}
+
+func (m MockTenantClient) Nodes() tenant.NodesClient {
+ return &m.NodesClient
+}
+
+func (m MockTenantClient) Namespaces() tenant.NamespacesClient {
+ return &m.NamespacesClient
+}
+
+func (m MockTenantClient) Workloads() tenant.WorkloadsClient {
+ return &m.WorkloadsClient
+}
+
+func (m MockTenantClient) VulnReports() tenant.VulnReportsClient {
+ return &m.VulnReportsClient
+}
+
+func (m MockTenantClient) Attestations() tenant.AttestationsClient {
+ return &m.AttestationClient
+}
+
+func (m MockTenantClient) Close() error {
+ return m.OnClose
+}
diff --git a/proto/platform/tenant/v1/test/mock_cluster.go b/proto/platform/tenant/v1/test/mock_cluster.go
new file mode 100644
index 00000000..d23a82cd
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_cluster.go
@@ -0,0 +1,150 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.ClustersClient = (*MockClustersClient)(nil)
+
+type MockClustersClient struct {
+ OnCreate []ClustersOnCreate
+ OnDelete []ClustersOnDelete
+ OnList []ClustersOnList
+ OnUpdate []ClustersOnUpdate
+ OnConfig []ClustersOnConfig
+ OnProfiles []ClustersOnProfiles
+ OnDiscover []ClustersOnDiscover
+ OnCIDR []ClustersOnCIDR
+}
+
+type ClustersOnCreate struct {
+ Given *tenant.CreateClusterRequest
+ Created *tenant.Cluster
+ Error error
+}
+
+type ClustersOnDelete struct {
+ Given *tenant.CreateClusterRequest
+ Error error
+}
+
+type ClustersOnList struct {
+ Given *tenant.ClusterFilter
+ List *tenant.ClusterList
+ Error error
+}
+
+type ClustersOnUpdate struct {
+ Given *tenant.Cluster
+ Updated *tenant.Cluster
+ Error error
+}
+
+type ClustersOnConfig struct {
+ Given *tenant.ClusterConfigRequest
+ Config *tenant.ClusterConfigResponse
+ Error error
+}
+
+type ClustersOnProfiles struct {
+ Given *tenant.ClusterProfilesRequest
+ Config *tenant.ClusterProfilesResponse
+ Error error
+}
+
+type ClustersOnDiscover struct {
+ Given *tenant.ClusterDiscoveryRequest
+ Config *tenant.ClusterDiscoveryResponse
+ Error error
+}
+
+type ClustersOnCIDR struct {
+ Given *tenant.ClusterCIDRRequest
+ Config *tenant.ClusterCIDRResponse
+ Error error
+}
+
+func (m MockClustersClient) Create(_ context.Context, given *tenant.CreateClusterRequest, _ ...grpc.CallOption) (*tenant.Cluster, error) {
+ for _, o := range m.OnCreate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Created, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) Delete(_ context.Context, given *tenant.DeleteClusterRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
+ for _, o := range m.OnDelete {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return &emptypb.Empty{}, o.Error
+ }
+ }
+ return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) List(_ context.Context, given *tenant.ClusterFilter, _ ...grpc.CallOption) (*tenant.ClusterList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) Update(_ context.Context, given *tenant.Cluster, _ ...grpc.CallOption) (*tenant.Cluster, error) {
+ for _, o := range m.OnUpdate {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Updated, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) Config(_ context.Context, given *tenant.ClusterConfigRequest, _ ...grpc.CallOption) (*tenant.ClusterConfigResponse, error) {
+ for _, o := range m.OnConfig {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Config, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) Profiles(_ context.Context, given *tenant.ClusterProfilesRequest, _ ...grpc.CallOption) (*tenant.ClusterProfilesResponse, error) {
+ for _, o := range m.OnProfiles {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Config, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) Discover(_ context.Context, given *tenant.ClusterDiscoveryRequest, _ ...grpc.CallOption) (*tenant.ClusterDiscoveryResponse, error) {
+ for _, o := range m.OnDiscover {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Config, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
+func (m MockClustersClient) CIDR(_ context.Context, given *tenant.ClusterCIDRRequest, _ ...grpc.CallOption) (*tenant.ClusterCIDRResponse, error) {
+ for _, o := range m.OnCIDR {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Config, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_contexts.go b/proto/platform/tenant/v1/test/mock_contexts.go
new file mode 100644
index 00000000..1bf9a53a
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_contexts.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.RecordContextsClient = (*MockRecordContextsClient)(nil)
+
+type MockRecordContextsClient struct {
+ OnList []RecordContextsOnList
+}
+
+type RecordContextsOnList struct {
+ Given *tenant.RecordContextFilter
+ List *tenant.RecordContextList
+ Error error
+}
+
+func (m MockRecordContextsClient) List(_ context.Context, given *tenant.RecordContextFilter, _ ...grpc.CallOption) (*tenant.RecordContextList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_namespaces.go b/proto/platform/tenant/v1/test/mock_namespaces.go
new file mode 100644
index 00000000..5d8a0129
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_namespaces.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.NamespacesClient = (*MockNamespacesClient)(nil)
+
+type MockNamespacesClient struct {
+ OnList []NamespacesOnList
+}
+
+type NamespacesOnList struct {
+ Given *tenant.NamespaceFilter
+ List *tenant.NamespaceList
+ Error error
+}
+
+func (m MockNamespacesClient) List(_ context.Context, given *tenant.NamespaceFilter, _ ...grpc.CallOption) (*tenant.NamespaceList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_nodes.go b/proto/platform/tenant/v1/test/mock_nodes.go
new file mode 100644
index 00000000..4bbcb6f9
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_nodes.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.NodesClient = (*MockNodesClient)(nil)
+
+type MockNodesClient struct {
+ OnList []NodesOnList
+}
+
+type NodesOnList struct {
+ Given *tenant.NodeFilter
+ List *tenant.NodeList
+ Error error
+}
+
+func (m MockNodesClient) List(_ context.Context, given *tenant.NodeFilter, _ ...grpc.CallOption) (*tenant.NodeList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_policy_results.go b/proto/platform/tenant/v1/test/mock_policy_results.go
new file mode 100644
index 00000000..790caa73
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_policy_results.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.PolicyResultsClient = (*MockPolicyResultsClient)(nil)
+
+type MockPolicyResultsClient struct {
+ OnList []PolicyResultsOnList
+}
+
+type PolicyResultsOnList struct {
+ Given *tenant.PolicyResultFilter
+ List *tenant.PolicyResultList
+ Error error
+}
+
+func (m MockPolicyResultsClient) List(_ context.Context, given *tenant.PolicyResultFilter, _ ...grpc.CallOption) (*tenant.PolicyResultList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_records.go b/proto/platform/tenant/v1/test/mock_records.go
new file mode 100644
index 00000000..c2ae2a64
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_records.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.RecordsClient = (*MockRecordsClient)(nil)
+
+type MockRecordsClient struct {
+ OnList []RecordsOnList
+}
+
+type RecordsOnList struct {
+ Given *tenant.RecordFilter
+ List *tenant.RecordList
+ Error error
+}
+
+func (m MockRecordsClient) List(_ context.Context, given *tenant.RecordFilter, _ ...grpc.CallOption) (*tenant.RecordList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_risks.go b/proto/platform/tenant/v1/test/mock_risks.go
new file mode 100644
index 00000000..2cbb4a93
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_risks.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.RisksClient = (*MockRisksClient)(nil)
+
+type MockRisksClient struct {
+ OnList []RisksOnList
+}
+
+type RisksOnList struct {
+ Given *tenant.RiskFilter
+ List *tenant.RiskList
+ Error error
+}
+
+func (m MockRisksClient) List(_ context.Context, given *tenant.RiskFilter, _ ...grpc.CallOption) (*tenant.RiskList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_sboms.go b/proto/platform/tenant/v1/test/mock_sboms.go
new file mode 100644
index 00000000..3e94ccaf
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_sboms.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.SbomsClient = (*MockSbomsClient)(nil)
+
+type MockSbomsClient struct {
+ OnList []SbomsOnList
+}
+
+type SbomsOnList struct {
+ Given *tenant.Sbom2Filter
+ List *tenant.Sbom2List
+ Error error
+}
+
+func (m MockSbomsClient) List(_ context.Context, given *tenant.Sbom2Filter, _ ...grpc.CallOption) (*tenant.Sbom2List, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_signatures.go b/proto/platform/tenant/v1/test/mock_signatures.go
new file mode 100644
index 00000000..098311e4
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_signatures.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.SignaturesClient = (*MockSignaturesClient)(nil)
+
+type MockSignaturesClient struct {
+ OnList []SignaturesOnList
+}
+
+type SignaturesOnList struct {
+ Given *tenant.SignatureFilter
+ List *tenant.SignatureList
+ Error error
+}
+
+func (m MockSignaturesClient) List(_ context.Context, given *tenant.SignatureFilter, _ ...grpc.CallOption) (*tenant.SignatureList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_vuln.go b/proto/platform/tenant/v1/test/mock_vuln.go
new file mode 100644
index 00000000..60a2d753
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_vuln.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.VulnReportsClient = (*MockVulnReportsClient)(nil)
+
+type MockVulnReportsClient struct {
+ OnList []VulnReportsOnList
+}
+
+type VulnReportsOnList struct {
+ Given *tenant.VulnReportFilter
+ List *tenant.VulnReportList
+ Error error
+}
+
+func (m MockVulnReportsClient) List(_ context.Context, given *tenant.VulnReportFilter, _ ...grpc.CallOption) (*tenant.VulnReportList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/test/mock_workloads.go b/proto/platform/tenant/v1/test/mock_workloads.go
new file mode 100644
index 00000000..caad4974
--- /dev/null
+++ b/proto/platform/tenant/v1/test/mock_workloads.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/google/go-cmp/cmp"
+ "google.golang.org/grpc"
+ "google.golang.org/protobuf/testing/protocmp"
+
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+)
+
+var _ tenant.WorkloadsClient = (*MockWorkloadsClient)(nil)
+
+type MockWorkloadsClient struct {
+ OnList []WorkloadsOnList
+}
+
+type WorkloadsOnList struct {
+ Given *tenant.WorkloadFilter
+ List *tenant.WorkloadList
+ Error error
+}
+
+func (m MockWorkloadsClient) List(_ context.Context, given *tenant.WorkloadFilter, _ ...grpc.CallOption) (*tenant.WorkloadList, error) {
+ for _, o := range m.OnList {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.go b/proto/platform/tenant/v1/vuln.platform.pb.go
new file mode 100644
index 00000000..8712768f
--- /dev/null
+++ b/proto/platform/tenant/v1/vuln.platform.pb.go
@@ -0,0 +1,1138 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: vuln.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type VulnerabilityRecord_Severity int32
+
+const (
+ VulnerabilityRecord_UNKNOWN VulnerabilityRecord_Severity = 0
+ VulnerabilityRecord_LOW VulnerabilityRecord_Severity = 1
+ VulnerabilityRecord_MEDIUM VulnerabilityRecord_Severity = 2
+ VulnerabilityRecord_HIGH VulnerabilityRecord_Severity = 3
+ VulnerabilityRecord_CRITICAL VulnerabilityRecord_Severity = 4
+)
+
+// Enum value maps for VulnerabilityRecord_Severity.
+var (
+ VulnerabilityRecord_Severity_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "LOW",
+ 2: "MEDIUM",
+ 3: "HIGH",
+ 4: "CRITICAL",
+ }
+ VulnerabilityRecord_Severity_value = map[string]int32{
+ "UNKNOWN": 0,
+ "LOW": 1,
+ "MEDIUM": 2,
+ "HIGH": 3,
+ "CRITICAL": 4,
+ }
+)
+
+func (x VulnerabilityRecord_Severity) Enum() *VulnerabilityRecord_Severity {
+ p := new(VulnerabilityRecord_Severity)
+ *p = x
+ return p
+}
+
+func (x VulnerabilityRecord_Severity) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (VulnerabilityRecord_Severity) Descriptor() protoreflect.EnumDescriptor {
+ return file_vuln_platform_proto_enumTypes[0].Descriptor()
+}
+
+func (VulnerabilityRecord_Severity) Type() protoreflect.EnumType {
+ return &file_vuln_platform_proto_enumTypes[0]
+}
+
+func (x VulnerabilityRecord_Severity) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use VulnerabilityRecord_Severity.Descriptor instead.
+func (VulnerabilityRecord_Severity) EnumDescriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{3, 0}
+}
+
+type Fix_State int32
+
+const (
+ Fix_UNKNOWN Fix_State = 0
+ Fix_FIXED Fix_State = 1
+ Fix_NOT_FIXED Fix_State = 2
+ Fix_WONT_FIX Fix_State = 3
+)
+
+// Enum value maps for Fix_State.
+var (
+ Fix_State_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "FIXED",
+ 2: "NOT_FIXED",
+ 3: "WONT_FIX",
+ }
+ Fix_State_value = map[string]int32{
+ "UNKNOWN": 0,
+ "FIXED": 1,
+ "NOT_FIXED": 2,
+ "WONT_FIX": 3,
+ }
+)
+
+func (x Fix_State) Enum() *Fix_State {
+ p := new(Fix_State)
+ *p = x
+ return p
+}
+
+func (x Fix_State) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Fix_State) Descriptor() protoreflect.EnumDescriptor {
+ return file_vuln_platform_proto_enumTypes[1].Descriptor()
+}
+
+func (Fix_State) Type() protoreflect.EnumType {
+ return &file_vuln_platform_proto_enumTypes[1]
+}
+
+func (x Fix_State) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Fix_State.Descriptor instead.
+func (Fix_State) EnumDescriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{4, 0}
+}
+
+type VulnReport struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The VulnReport UIDP at which this VulnReport resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // vulnerability_db_last_build_time holds the time when the vulnerability database was built last time.
+ VulnerabilityDbLastBuildTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=vulnerability_db_last_build_time,json=vulnerabilityDbLastBuildTime,proto3" json:"vulnerability_db_last_build_time,omitempty"`
+ // Report's list of vulnerability matches(s).
+ VulnerabilityMatches []*VulnerabilityMatch `protobuf:"bytes,3,rep,name=vulnerability_matches,json=vulnerabilityMatches,proto3" json:"vulnerability_matches,omitempty"`
+ // scanner contains some information about the scanner used to generate the report.
+ Scanner *Scanner `protobuf:"bytes,4,opt,name=scanner,proto3" json:"scanner,omitempty"`
+ // report_generation tracks the timestamp at which this report was generated.
+ ReportGeneration *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=report_generation,json=reportGeneration,proto3" json:"report_generation,omitempty"`
+ // raw_vuln_report may or may not be useful in the long term, but for now to make
+ // progress on this, we'll just yolo and serialize it here.
+ RawVulnReport []byte `protobuf:"bytes,6,opt,name=raw_vuln_report,json=rawVulnReport,proto3" json:"raw_vuln_report,omitempty"`
+ // last_seen tracks the timestamp at which this vuln report was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+}
+
+func (x *VulnReport) Reset() {
+ *x = VulnReport{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnReport) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnReport) ProtoMessage() {}
+
+func (x *VulnReport) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnReport.ProtoReflect.Descriptor instead.
+func (*VulnReport) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *VulnReport) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnReport) GetVulnerabilityDbLastBuildTime() *timestamppb.Timestamp {
+ if x != nil {
+ return x.VulnerabilityDbLastBuildTime
+ }
+ return nil
+}
+
+func (x *VulnReport) GetVulnerabilityMatches() []*VulnerabilityMatch {
+ if x != nil {
+ return x.VulnerabilityMatches
+ }
+ return nil
+}
+
+func (x *VulnReport) GetScanner() *Scanner {
+ if x != nil {
+ return x.Scanner
+ }
+ return nil
+}
+
+func (x *VulnReport) GetReportGeneration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ReportGeneration
+ }
+ return nil
+}
+
+func (x *VulnReport) GetRawVulnReport() []byte {
+ if x != nil {
+ return x.RawVulnReport
+ }
+ return nil
+}
+
+func (x *VulnReport) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+type Scanner struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // name contains the vendor name of the scanner.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // version holds the version of the used scanner to generate the report.
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *Scanner) Reset() {
+ *x = Scanner{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Scanner) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scanner) ProtoMessage() {}
+
+func (x *Scanner) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Scanner.ProtoReflect.Descriptor instead.
+func (*Scanner) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Scanner) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Scanner) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+type VulnerabilityMatch struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Vulnerability holds information about the found vulnerability.
+ Vulnerability *VulnerabilityRecord `protobuf:"bytes,1,opt,name=vulnerability,proto3" json:"vulnerability,omitempty"`
+ // Package affected by this vulnerability.
+ Pkg *Package2 `protobuf:"bytes,2,opt,name=pkg,proto3" json:"pkg,omitempty"`
+ // Fix related data about this vulnerability.
+ Fix *Fix `protobuf:"bytes,3,opt,name=fix,proto3,oneof" json:"fix,omitempty"`
+}
+
+func (x *VulnerabilityMatch) Reset() {
+ *x = VulnerabilityMatch{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityMatch) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityMatch) ProtoMessage() {}
+
+func (x *VulnerabilityMatch) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityMatch.ProtoReflect.Descriptor instead.
+func (*VulnerabilityMatch) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *VulnerabilityMatch) GetVulnerability() *VulnerabilityRecord {
+ if x != nil {
+ return x.Vulnerability
+ }
+ return nil
+}
+
+func (x *VulnerabilityMatch) GetPkg() *Package2 {
+ if x != nil {
+ return x.Pkg
+ }
+ return nil
+}
+
+func (x *VulnerabilityMatch) GetFix() *Fix {
+ if x != nil {
+ return x.Fix
+ }
+ return nil
+}
+
+type VulnerabilityRecord struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id of the vulnerability e.g. CVE_1231-12.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // a short description of this vulnerability.
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ // severity is the value representing the severity of the vulnerability
+ Severity VulnerabilityRecord_Severity `protobuf:"varint,3,opt,name=severity,proto3,enum=chainguard.platform.tenant.VulnerabilityRecord_Severity" json:"severity,omitempty"`
+ // source from where the vulnerability information was obtained, e.g. nvd, github, osv.
+ Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"`
+ // List of cvss information about the exploitability of the vulnerability.
+ Cvss []*VulnerabilityRecord_Cvss `protobuf:"bytes,5,rep,name=cvss,proto3" json:"cvss,omitempty"`
+ // List of cpe_uri on which the vulnerability was found.
+ CpeUri []string `protobuf:"bytes,6,rep,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"`
+ // URLs related to this vulnerability.
+ RelatedUrls []string `protobuf:"bytes,7,rep,name=related_urls,json=relatedUrls,proto3" json:"related_urls,omitempty"`
+ // advisories related to this vulnerability.
+ Advisories map[string]string `protobuf:"bytes,8,rep,name=advisories,proto3" json:"advisories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // related vulnerabilities to the main vulnerability reported here.
+ RelatedVulnerabilities []*VulnerabilityRecord_RelatedVulnerability `protobuf:"bytes,9,rep,name=related_vulnerabilities,json=relatedVulnerabilities,proto3" json:"related_vulnerabilities,omitempty"`
+ // display_id is the normalized value of the vulnerability ID often defined by a CVE-ID.
+ DisplayId string `protobuf:"bytes,10,opt,name=display_id,json=displayId,proto3" json:"display_id,omitempty"`
+}
+
+func (x *VulnerabilityRecord) Reset() {
+ *x = VulnerabilityRecord{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityRecord) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityRecord) ProtoMessage() {}
+
+func (x *VulnerabilityRecord) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityRecord.ProtoReflect.Descriptor instead.
+func (*VulnerabilityRecord) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *VulnerabilityRecord) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnerabilityRecord) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *VulnerabilityRecord) GetSeverity() VulnerabilityRecord_Severity {
+ if x != nil {
+ return x.Severity
+ }
+ return VulnerabilityRecord_UNKNOWN
+}
+
+func (x *VulnerabilityRecord) GetSource() string {
+ if x != nil {
+ return x.Source
+ }
+ return ""
+}
+
+func (x *VulnerabilityRecord) GetCvss() []*VulnerabilityRecord_Cvss {
+ if x != nil {
+ return x.Cvss
+ }
+ return nil
+}
+
+func (x *VulnerabilityRecord) GetCpeUri() []string {
+ if x != nil {
+ return x.CpeUri
+ }
+ return nil
+}
+
+func (x *VulnerabilityRecord) GetRelatedUrls() []string {
+ if x != nil {
+ return x.RelatedUrls
+ }
+ return nil
+}
+
+func (x *VulnerabilityRecord) GetAdvisories() map[string]string {
+ if x != nil {
+ return x.Advisories
+ }
+ return nil
+}
+
+func (x *VulnerabilityRecord) GetRelatedVulnerabilities() []*VulnerabilityRecord_RelatedVulnerability {
+ if x != nil {
+ return x.RelatedVulnerabilities
+ }
+ return nil
+}
+
+func (x *VulnerabilityRecord) GetDisplayId() string {
+ if x != nil {
+ return x.DisplayId
+ }
+ return ""
+}
+
+type Fix struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // List of in versions of the package on which the vulnerability has been solved.
+ Versions []string `protobuf:"bytes,1,rep,name=versions,proto3" json:"versions,omitempty"`
+ // state reflects the state of the fix, e.g. fixed, unknown, not-fixed, won't-fix.
+ State Fix_State `protobuf:"varint,2,opt,name=state,proto3,enum=chainguard.platform.tenant.Fix_State" json:"state,omitempty"`
+}
+
+func (x *Fix) Reset() {
+ *x = Fix{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Fix) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Fix) ProtoMessage() {}
+
+func (x *Fix) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Fix.ProtoReflect.Descriptor instead.
+func (*Fix) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Fix) GetVersions() []string {
+ if x != nil {
+ return x.Versions
+ }
+ return nil
+}
+
+func (x *Fix) GetState() Fix_State {
+ if x != nil {
+ return x.State
+ }
+ return Fix_UNKNOWN
+}
+
+type VulnReportList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*VulnReport `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *VulnReportList) Reset() {
+ *x = VulnReportList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnReportList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnReportList) ProtoMessage() {}
+
+func (x *VulnReportList) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnReportList.ProtoReflect.Descriptor instead.
+func (*VulnReportList) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *VulnReportList) GetItems() []*VulnReport {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type VulnReportFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id is the exact UID of the record.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // include_raw_vuln_report is a flag to return a list of reports containing the raw report.
+ IncludeRawVulnReport bool `protobuf:"varint,6,opt,name=include_raw_vuln_report,json=includeRawVulnReport,proto3" json:"include_raw_vuln_report,omitempty"`
+}
+
+func (x *VulnReportFilter) Reset() {
+ *x = VulnReportFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnReportFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnReportFilter) ProtoMessage() {}
+
+func (x *VulnReportFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnReportFilter.ProtoReflect.Descriptor instead.
+func (*VulnReportFilter) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *VulnReportFilter) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnReportFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+func (x *VulnReportFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *VulnReportFilter) GetIncludeRawVulnReport() bool {
+ if x != nil {
+ return x.IncludeRawVulnReport
+ }
+ return false
+}
+
+type VulnerabilityRecord_Cvss struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
+ Score string `protobuf:"bytes,1,opt,name=score,proto3" json:"score,omitempty"`
+ // CVSS version used to populate score and severity.
+ Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (x *VulnerabilityRecord_Cvss) Reset() {
+ *x = VulnerabilityRecord_Cvss{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityRecord_Cvss) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityRecord_Cvss) ProtoMessage() {}
+
+func (x *VulnerabilityRecord_Cvss) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityRecord_Cvss.ProtoReflect.Descriptor instead.
+func (*VulnerabilityRecord_Cvss) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{3, 0}
+}
+
+func (x *VulnerabilityRecord_Cvss) GetScore() string {
+ if x != nil {
+ return x.Score
+ }
+ return ""
+}
+
+func (x *VulnerabilityRecord_Cvss) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+type VulnerabilityRecord_RelatedVulnerability struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ID of the vulnerability.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Source from where the vulnerability information was obtained, e.g. nvd, github, osv.
+ Source string `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`
+}
+
+func (x *VulnerabilityRecord_RelatedVulnerability) Reset() {
+ *x = VulnerabilityRecord_RelatedVulnerability{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vuln_platform_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *VulnerabilityRecord_RelatedVulnerability) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VulnerabilityRecord_RelatedVulnerability) ProtoMessage() {}
+
+func (x *VulnerabilityRecord_RelatedVulnerability) ProtoReflect() protoreflect.Message {
+ mi := &file_vuln_platform_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VulnerabilityRecord_RelatedVulnerability.ProtoReflect.Descriptor instead.
+func (*VulnerabilityRecord_RelatedVulnerability) Descriptor() ([]byte, []int) {
+ return file_vuln_platform_proto_rawDescGZIP(), []int{3, 2}
+}
+
+func (x *VulnerabilityRecord_RelatedVulnerability) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *VulnerabilityRecord_RelatedVulnerability) GetSource() string {
+ if x != nil {
+ return x.Source
+ }
+ return ""
+}
+
+var File_vuln_platform_proto protoreflect.FileDescriptor
+
+var file_vuln_platform_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x76, 0x75, 0x6c, 0x6e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
+ 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64,
+ 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x1a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x03, 0x0a, 0x0a, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42,
+ 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x15, 0x76, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x14, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a,
+ 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e,
+ 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x11,
+ 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x75, 0x6c,
+ 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
+ 0x72, 0x61, 0x77, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a,
+ 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
+ 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
+ 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22,
+ 0xe3, 0x01, 0x0a, 0x12, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65,
+ 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0d,
+ 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a,
+ 0x03, 0x70, 0x6b, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x32,
+ 0x52, 0x03, 0x70, 0x6b, 0x67, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x46, 0x69, 0x78, 0x48, 0x00, 0x52, 0x03, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a,
+ 0x04, 0x5f, 0x66, 0x69, 0x78, 0x22, 0xb7, 0x06, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x54, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56,
+ 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f,
+ 0x72, 0x64, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76,
+ 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a,
+ 0x04, 0x63, 0x76, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x76, 0x73,
+ 0x73, 0x52, 0x04, 0x63, 0x76, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75,
+ 0x72, 0x69, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69,
+ 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73,
+ 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55,
+ 0x72, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65,
+ 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72,
+ 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f,
+ 0x72, 0x69, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x17, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f,
+ 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x56, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69,
+ 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
+ 0x49, 0x64, 0x1a, 0x36, 0x0a, 0x04, 0x43, 0x76, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
+ 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
+ 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x64,
+ 0x76, 0x69, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+ 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x14, 0x52, 0x65, 0x6c,
+ 0x61, 0x74, 0x65, 0x64, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+ 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76,
+ 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
+ 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d,
+ 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10,
+ 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x22,
+ 0x9c, 0x01, 0x0a, 0x03, 0x46, 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x46, 0x69, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x22, 0x3c, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
+ 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x02,
+ 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x4f, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x58, 0x10, 0x03, 0x22, 0x4e,
+ 0x0a, 0x0e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x3c, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xe0,
+ 0x01, 0x0a, 0x10, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
+ 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
+ 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x35,
+ 0x0a, 0x17, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x75,
+ 0x6c, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x61, 0x77, 0x56, 0x75, 0x6c, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10,
+ 0x05, 0x32, 0x9e, 0x01, 0x0a, 0x0b, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f,
+ 0x72, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x94, 0x05,
+ 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
+ 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_vuln_platform_proto_rawDescOnce sync.Once
+ file_vuln_platform_proto_rawDescData = file_vuln_platform_proto_rawDesc
+)
+
+func file_vuln_platform_proto_rawDescGZIP() []byte {
+ file_vuln_platform_proto_rawDescOnce.Do(func() {
+ file_vuln_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_vuln_platform_proto_rawDescData)
+ })
+ return file_vuln_platform_proto_rawDescData
+}
+
+var file_vuln_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_vuln_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_vuln_platform_proto_goTypes = []interface{}{
+ (VulnerabilityRecord_Severity)(0), // 0: chainguard.platform.tenant.VulnerabilityRecord.Severity
+ (Fix_State)(0), // 1: chainguard.platform.tenant.Fix.State
+ (*VulnReport)(nil), // 2: chainguard.platform.tenant.VulnReport
+ (*Scanner)(nil), // 3: chainguard.platform.tenant.Scanner
+ (*VulnerabilityMatch)(nil), // 4: chainguard.platform.tenant.VulnerabilityMatch
+ (*VulnerabilityRecord)(nil), // 5: chainguard.platform.tenant.VulnerabilityRecord
+ (*Fix)(nil), // 6: chainguard.platform.tenant.Fix
+ (*VulnReportList)(nil), // 7: chainguard.platform.tenant.VulnReportList
+ (*VulnReportFilter)(nil), // 8: chainguard.platform.tenant.VulnReportFilter
+ (*VulnerabilityRecord_Cvss)(nil), // 9: chainguard.platform.tenant.VulnerabilityRecord.Cvss
+ nil, // 10: chainguard.platform.tenant.VulnerabilityRecord.AdvisoriesEntry
+ (*VulnerabilityRecord_RelatedVulnerability)(nil), // 11: chainguard.platform.tenant.VulnerabilityRecord.RelatedVulnerability
+ (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
+ (*Package2)(nil), // 13: chainguard.platform.tenant.Package2
+ (*v1.UIDPFilter)(nil), // 14: chainguard.platform.common.UIDPFilter
+}
+var file_vuln_platform_proto_depIdxs = []int32{
+ 12, // 0: chainguard.platform.tenant.VulnReport.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 4, // 1: chainguard.platform.tenant.VulnReport.vulnerability_matches:type_name -> chainguard.platform.tenant.VulnerabilityMatch
+ 3, // 2: chainguard.platform.tenant.VulnReport.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 12, // 3: chainguard.platform.tenant.VulnReport.report_generation:type_name -> google.protobuf.Timestamp
+ 12, // 4: chainguard.platform.tenant.VulnReport.last_seen:type_name -> google.protobuf.Timestamp
+ 5, // 5: chainguard.platform.tenant.VulnerabilityMatch.vulnerability:type_name -> chainguard.platform.tenant.VulnerabilityRecord
+ 13, // 6: chainguard.platform.tenant.VulnerabilityMatch.pkg:type_name -> chainguard.platform.tenant.Package2
+ 6, // 7: chainguard.platform.tenant.VulnerabilityMatch.fix:type_name -> chainguard.platform.tenant.Fix
+ 0, // 8: chainguard.platform.tenant.VulnerabilityRecord.severity:type_name -> chainguard.platform.tenant.VulnerabilityRecord.Severity
+ 9, // 9: chainguard.platform.tenant.VulnerabilityRecord.cvss:type_name -> chainguard.platform.tenant.VulnerabilityRecord.Cvss
+ 10, // 10: chainguard.platform.tenant.VulnerabilityRecord.advisories:type_name -> chainguard.platform.tenant.VulnerabilityRecord.AdvisoriesEntry
+ 11, // 11: chainguard.platform.tenant.VulnerabilityRecord.related_vulnerabilities:type_name -> chainguard.platform.tenant.VulnerabilityRecord.RelatedVulnerability
+ 1, // 12: chainguard.platform.tenant.Fix.state:type_name -> chainguard.platform.tenant.Fix.State
+ 2, // 13: chainguard.platform.tenant.VulnReportList.items:type_name -> chainguard.platform.tenant.VulnReport
+ 14, // 14: chainguard.platform.tenant.VulnReportFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 12, // 15: chainguard.platform.tenant.VulnReportFilter.active_since:type_name -> google.protobuf.Timestamp
+ 8, // 16: chainguard.platform.tenant.VulnReports.List:input_type -> chainguard.platform.tenant.VulnReportFilter
+ 7, // 17: chainguard.platform.tenant.VulnReports.List:output_type -> chainguard.platform.tenant.VulnReportList
+ 17, // [17:18] is the sub-list for method output_type
+ 16, // [16:17] is the sub-list for method input_type
+ 16, // [16:16] is the sub-list for extension type_name
+ 16, // [16:16] is the sub-list for extension extendee
+ 0, // [0:16] is the sub-list for field type_name
+}
+
+func init() { file_vuln_platform_proto_init() }
+func file_vuln_platform_proto_init() {
+ if File_vuln_platform_proto != nil {
+ return
+ }
+ file_sbom_platform_proto_init()
+ if !protoimpl.UnsafeEnabled {
+ file_vuln_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnReport); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Scanner); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityMatch); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityRecord); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Fix); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnReportList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnReportFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityRecord_Cvss); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vuln_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*VulnerabilityRecord_RelatedVulnerability); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_vuln_platform_proto_msgTypes[2].OneofWrappers = []interface{}{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_vuln_platform_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 10,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_vuln_platform_proto_goTypes,
+ DependencyIndexes: file_vuln_platform_proto_depIdxs,
+ EnumInfos: file_vuln_platform_proto_enumTypes,
+ MessageInfos: file_vuln_platform_proto_msgTypes,
+ }.Build()
+ File_vuln_platform_proto = out.File
+ file_vuln_platform_proto_rawDesc = nil
+ file_vuln_platform_proto_goTypes = nil
+ file_vuln_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.gw.go b/proto/platform/tenant/v1/vuln.platform.pb.gw.go
new file mode 100644
index 00000000..617e95a6
--- /dev/null
+++ b/proto/platform/tenant/v1/vuln.platform.pb.gw.go
@@ -0,0 +1,171 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: vuln.platform.proto
+
+/*
+Package v1 is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package v1
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
+ "google.golang.org/protobuf/proto"
+)
+
+// Suppress "imported and not used" errors
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+var _ = metadata.Join
+
+var (
+ filter_VulnReports_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_VulnReports_List_0(ctx context.Context, marshaler runtime.Marshaler, client VulnReportsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnReportFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_VulnReports_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_VulnReports_List_0(ctx context.Context, marshaler runtime.Marshaler, server VulnReportsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq VulnReportFilter
+ var metadata runtime.ServerMetadata
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_VulnReports_List_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.List(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
+// RegisterVulnReportsHandlerServer registers the http handlers for service VulnReports to "mux".
+// UnaryRPC :call VulnReportsServer directly.
+// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
+// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterVulnReportsHandlerFromEndpoint instead.
+func RegisterVulnReportsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server VulnReportsServer) error {
+
+ mux.Handle("GET", pattern_VulnReports_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.VulnReports/List", runtime.WithHTTPPathPattern("/tenant/v1/vulnreports"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_VulnReports_List_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_VulnReports_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+// RegisterVulnReportsHandlerFromEndpoint is same as RegisterVulnReportsHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterVulnReportsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterVulnReportsHandler(ctx, mux, conn)
+}
+
+// RegisterVulnReportsHandler registers the http handlers for service VulnReports to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterVulnReportsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterVulnReportsHandlerClient(ctx, mux, NewVulnReportsClient(conn))
+}
+
+// RegisterVulnReportsHandlerClient registers the http handlers for service VulnReports
+// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "VulnReportsClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "VulnReportsClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "VulnReportsClient" to call the correct interceptors.
+func RegisterVulnReportsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client VulnReportsClient) error {
+
+ mux.Handle("GET", pattern_VulnReports_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.VulnReports/List", runtime.WithHTTPPathPattern("/tenant/v1/vulnreports"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_VulnReports_List_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_VulnReports_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_VulnReports_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "vulnreports"}, ""))
+)
+
+var (
+ forward_VulnReports_List_0 = runtime.ForwardResponseMessage
+)
diff --git a/proto/platform/tenant/v1/vuln.platform.proto b/proto/platform/tenant/v1/vuln.platform.proto
new file mode 100644
index 00000000..c9ba3738
--- /dev/null
+++ b/proto/platform/tenant/v1/vuln.platform.proto
@@ -0,0 +1,162 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantVulnProto";
+
+package chainguard.platform.tenant;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+import "sbom.platform.proto";
+
+service VulnReports {
+ rpc List(VulnReportFilter) returns (VulnReportList) {
+ option (google.api.http) = {
+ get: "/tenant/v1/vulnreports"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_VULN_REPORTS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message VulnReport {
+ // id, The VulnReport UIDP at which this VulnReport resides.
+ string id = 1;
+
+ // vulnerability_db_last_build_time holds the time when the vulnerability database was built last time.
+ google.protobuf.Timestamp vulnerability_db_last_build_time = 2;
+
+ // Report's list of vulnerability matches(s).
+ repeated VulnerabilityMatch vulnerability_matches = 3;
+
+ // scanner contains some information about the scanner used to generate the report.
+ Scanner scanner = 4;
+
+ // report_generation tracks the timestamp at which this report was generated.
+ google.protobuf.Timestamp report_generation = 5;
+
+ // raw_vuln_report may or may not be useful in the long term, but for now to make
+ // progress on this, we'll just yolo and serialize it here.
+ bytes raw_vuln_report = 6;
+
+ // last_seen tracks the timestamp at which this vuln report was last seen.
+ google.protobuf.Timestamp last_seen = 7;
+}
+
+message Scanner {
+ // name contains the vendor name of the scanner.
+ string name = 1;
+ // version holds the version of the used scanner to generate the report.
+ string version = 2;
+}
+
+message VulnerabilityMatch {
+ // Vulnerability holds information about the found vulnerability.
+ VulnerabilityRecord vulnerability = 1;
+
+ // Package affected by this vulnerability.
+ Package2 pkg = 2;
+
+ // Fix related data about this vulnerability.
+ optional Fix fix = 3;
+}
+
+message VulnerabilityRecord {
+ // id of the vulnerability e.g. CVE_1231-12.
+ string id = 1;
+
+ // a short description of this vulnerability.
+ string description = 2;
+
+ // severity is the value representing the severity of the vulnerability
+ Severity severity = 3;
+
+ enum Severity {
+ UNKNOWN = 0;
+ LOW = 1;
+ MEDIUM = 2;
+ HIGH = 3;
+ CRITICAL = 4;
+ }
+
+ // source from where the vulnerability information was obtained, e.g. nvd, github, osv.
+ string source = 4;
+
+ // List of cvss information about the exploitability of the vulnerability.
+ repeated Cvss cvss = 5;
+
+ message Cvss {
+ // CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
+ string score = 1;
+ // CVSS version used to populate score and severity.
+ string version = 2;
+ }
+
+ // List of cpe_uri on which the vulnerability was found.
+ repeated string cpe_uri = 6;
+
+ // URLs related to this vulnerability.
+ repeated string related_urls = 7;
+
+ // advisories related to this vulnerability.
+ map advisories = 8;
+
+ message RelatedVulnerability {
+ // ID of the vulnerability.
+ string id = 1;
+ // Source from where the vulnerability information was obtained, e.g. nvd, github, osv.
+ string source = 2;
+ }
+
+ // related vulnerabilities to the main vulnerability reported here.
+ repeated RelatedVulnerability related_vulnerabilities = 9;
+
+ // display_id is the normalized value of the vulnerability ID often defined by a CVE-ID.
+ string display_id = 10;
+}
+
+message Fix {
+ // List of in versions of the package on which the vulnerability has been solved.
+ repeated string versions = 1;
+
+ // state reflects the state of the fix, e.g. fixed, unknown, not-fixed, won't-fix.
+ State state = 2;
+ enum State {
+ UNKNOWN = 0;
+ FIXED = 1;
+ NOT_FIXED = 2;
+ WONT_FIX = 3;
+ }
+}
+
+message VulnReportList {
+ repeated VulnReport items = 1;
+}
+
+message VulnReportFilter {
+ // id is the exact UID of the record.
+ string id = 1;
+
+ chainguard.platform.common.UIDPFilter uidp = 2;
+
+ // This field was retired and is no longer served.
+ reserved 3;
+
+ // This field was retired and is no longer served.
+ reserved 4;
+
+ // active_since is the timestamp after which the records should
+ // have last been observed in the returned context.
+ google.protobuf.Timestamp active_since = 5;
+
+ // include_raw_vuln_report is a flag to return a list of reports containing the raw report.
+ bool include_raw_vuln_report = 6;
+}
diff --git a/proto/platform/tenant/v1/vuln.platform_grpc.pb.go b/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
new file mode 100644
index 00000000..818be6ab
--- /dev/null
+++ b/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: vuln.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ VulnReports_List_FullMethodName = "/chainguard.platform.tenant.VulnReports/List"
+)
+
+// VulnReportsClient is the client API for VulnReports service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type VulnReportsClient interface {
+ List(ctx context.Context, in *VulnReportFilter, opts ...grpc.CallOption) (*VulnReportList, error)
+}
+
+type vulnReportsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewVulnReportsClient(cc grpc.ClientConnInterface) VulnReportsClient {
+ return &vulnReportsClient{cc}
+}
+
+func (c *vulnReportsClient) List(ctx context.Context, in *VulnReportFilter, opts ...grpc.CallOption) (*VulnReportList, error) {
+ out := new(VulnReportList)
+ err := c.cc.Invoke(ctx, VulnReports_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// VulnReportsServer is the server API for VulnReports service.
+// All implementations must embed UnimplementedVulnReportsServer
+// for forward compatibility
+type VulnReportsServer interface {
+ List(context.Context, *VulnReportFilter) (*VulnReportList, error)
+ mustEmbedUnimplementedVulnReportsServer()
+}
+
+// UnimplementedVulnReportsServer must be embedded to have forward compatible implementations.
+type UnimplementedVulnReportsServer struct {
+}
+
+func (UnimplementedVulnReportsServer) List(context.Context, *VulnReportFilter) (*VulnReportList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedVulnReportsServer) mustEmbedUnimplementedVulnReportsServer() {}
+
+// UnsafeVulnReportsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to VulnReportsServer will
+// result in compilation errors.
+type UnsafeVulnReportsServer interface {
+ mustEmbedUnimplementedVulnReportsServer()
+}
+
+func RegisterVulnReportsServer(s grpc.ServiceRegistrar, srv VulnReportsServer) {
+ s.RegisterService(&VulnReports_ServiceDesc, srv)
+}
+
+func _VulnReports_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(VulnReportFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VulnReportsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: VulnReports_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VulnReportsServer).List(ctx, req.(*VulnReportFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// VulnReports_ServiceDesc is the grpc.ServiceDesc for VulnReports service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var VulnReports_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.VulnReports",
+ HandlerType: (*VulnReportsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _VulnReports_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "vuln.platform.proto",
+}
diff --git a/proto/platform/tenant/v1/workload.platform.pb.go b/proto/platform/tenant/v1/workload.platform.pb.go
new file mode 100644
index 00000000..2f5c4958
--- /dev/null
+++ b/proto/platform/tenant/v1/workload.platform.pb.go
@@ -0,0 +1,436 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.1
+// protoc v3.21.12
+// source: workload.platform.proto
+
+package v1
+
+import (
+ _ "chainguard.dev/sdk/proto/annotations"
+ v1 "chainguard.dev/sdk/proto/platform/common/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+ reflect "reflect"
+ sync "sync"
+)
+
+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)
+)
+
+type Workload struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // id, The Workload UIDP at which this Workload resides.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // name of the Workload.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ // a short description of this Workload.
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ // remote_id is the remote ID of this Workload.
+ RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
+ ApiVersion string `protobuf:"bytes,6,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
+ Kind string `protobuf:"bytes,7,opt,name=kind,proto3" json:"kind,omitempty"`
+ // last_seen tracks the timestamp at which this workload was last seen.
+ LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
+ // owner_id is the remote_id of the Workload that is referenced via a
+ // "controller" owner reference by this workload.
+ OwnerId string `protobuf:"bytes,9,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
+}
+
+func (x *Workload) Reset() {
+ *x = Workload{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_workload_platform_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Workload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Workload) ProtoMessage() {}
+
+func (x *Workload) ProtoReflect() protoreflect.Message {
+ mi := &file_workload_platform_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Workload.ProtoReflect.Descriptor instead.
+func (*Workload) Descriptor() ([]byte, []int) {
+ return file_workload_platform_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Workload) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *Workload) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *Workload) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *Workload) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *Workload) GetLabels() string {
+ if x != nil {
+ return x.Labels
+ }
+ return ""
+}
+
+func (x *Workload) GetApiVersion() string {
+ if x != nil {
+ return x.ApiVersion
+ }
+ return ""
+}
+
+func (x *Workload) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *Workload) GetLastSeen() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastSeen
+ }
+ return nil
+}
+
+func (x *Workload) GetOwnerId() string {
+ if x != nil {
+ return x.OwnerId
+ }
+ return ""
+}
+
+type WorkloadList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*Workload `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *WorkloadList) Reset() {
+ *x = WorkloadList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_workload_platform_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadList) ProtoMessage() {}
+
+func (x *WorkloadList) ProtoReflect() protoreflect.Message {
+ mi := &file_workload_platform_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadList.ProtoReflect.Descriptor instead.
+func (*WorkloadList) Descriptor() ([]byte, []int) {
+ return file_workload_platform_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *WorkloadList) GetItems() []*Workload {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type WorkloadFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // remote_id is the remote ID of this Workload.
+ RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
+ // active_since is the timestamp after which returned workloads
+ // should have been active (last seen).
+ ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
+ // name filters on the resource name.
+ Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
+ // Return only the workloads owned by a particular remote_id.
+ OwnerId string `protobuf:"bytes,5,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
+ Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
+}
+
+func (x *WorkloadFilter) Reset() {
+ *x = WorkloadFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_workload_platform_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkloadFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkloadFilter) ProtoMessage() {}
+
+func (x *WorkloadFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_workload_platform_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkloadFilter.ProtoReflect.Descriptor instead.
+func (*WorkloadFilter) Descriptor() ([]byte, []int) {
+ return file_workload_platform_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *WorkloadFilter) GetRemoteId() string {
+ if x != nil {
+ return x.RemoteId
+ }
+ return ""
+}
+
+func (x *WorkloadFilter) GetActiveSince() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ActiveSince
+ }
+ return nil
+}
+
+func (x *WorkloadFilter) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *WorkloadFilter) GetOwnerId() string {
+ if x != nil {
+ return x.OwnerId
+ }
+ return ""
+}
+
+func (x *WorkloadFilter) GetUidp() *v1.UIDPFilter {
+ if x != nil {
+ return x.Uidp
+ }
+ return nil
+}
+
+var File_workload_platform_proto protoreflect.FileDescriptor
+
+var file_workload_platform_proto_rawDesc = []byte{
+ 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
+ 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f,
+ 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x02, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65,
+ 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
+ 0x69, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08,
+ 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
+ 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
+ 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x22, 0xd7, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+ 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69,
+ 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e,
+ 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
+ 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x79, 0x0a,
+ 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x6c, 0x0a, 0x04, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08,
+ 0x12, 0x06, 0x0a, 0x02, 0xb3, 0x09, 0x10, 0x01, 0x42, 0x73, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76,
+ 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+ 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
+ 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_workload_platform_proto_rawDescOnce sync.Once
+ file_workload_platform_proto_rawDescData = file_workload_platform_proto_rawDesc
+)
+
+func file_workload_platform_proto_rawDescGZIP() []byte {
+ file_workload_platform_proto_rawDescOnce.Do(func() {
+ file_workload_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_workload_platform_proto_rawDescData)
+ })
+ return file_workload_platform_proto_rawDescData
+}
+
+var file_workload_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_workload_platform_proto_goTypes = []interface{}{
+ (*Workload)(nil), // 0: chainguard.platform.tenant.Workload
+ (*WorkloadList)(nil), // 1: chainguard.platform.tenant.WorkloadList
+ (*WorkloadFilter)(nil), // 2: chainguard.platform.tenant.WorkloadFilter
+ (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
+}
+var file_workload_platform_proto_depIdxs = []int32{
+ 3, // 0: chainguard.platform.tenant.Workload.last_seen:type_name -> google.protobuf.Timestamp
+ 0, // 1: chainguard.platform.tenant.WorkloadList.items:type_name -> chainguard.platform.tenant.Workload
+ 3, // 2: chainguard.platform.tenant.WorkloadFilter.active_since:type_name -> google.protobuf.Timestamp
+ 4, // 3: chainguard.platform.tenant.WorkloadFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 2, // 4: chainguard.platform.tenant.Workloads.List:input_type -> chainguard.platform.tenant.WorkloadFilter
+ 1, // 5: chainguard.platform.tenant.Workloads.List:output_type -> chainguard.platform.tenant.WorkloadList
+ 5, // [5:6] is the sub-list for method output_type
+ 4, // [4:5] is the sub-list for method input_type
+ 4, // [4:4] is the sub-list for extension type_name
+ 4, // [4:4] is the sub-list for extension extendee
+ 0, // [0:4] is the sub-list for field type_name
+}
+
+func init() { file_workload_platform_proto_init() }
+func file_workload_platform_proto_init() {
+ if File_workload_platform_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_workload_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Workload); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_workload_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_workload_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkloadFilter); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_workload_platform_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_workload_platform_proto_goTypes,
+ DependencyIndexes: file_workload_platform_proto_depIdxs,
+ MessageInfos: file_workload_platform_proto_msgTypes,
+ }.Build()
+ File_workload_platform_proto = out.File
+ file_workload_platform_proto_rawDesc = nil
+ file_workload_platform_proto_goTypes = nil
+ file_workload_platform_proto_depIdxs = nil
+}
diff --git a/proto/platform/tenant/v1/workload.platform.proto b/proto/platform/tenant/v1/workload.platform.proto
new file mode 100644
index 00000000..cd8fbe36
--- /dev/null
+++ b/proto/platform/tenant/v1/workload.platform.proto
@@ -0,0 +1,71 @@
+syntax = "proto3";
+
+option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
+option java_multiple_files = true;
+option java_package = "dev.chainguard.sdk.platform.tenant.v1";
+option java_outer_classname = "PlatformTenantWorkloadProto";
+
+package chainguard.platform.tenant;
+
+import "google/protobuf/timestamp.proto";
+import "annotations/auth.proto";
+import "platform/common/v1/uidp.platform.proto";
+
+service Workloads {
+ rpc List(WorkloadFilter) returns (WorkloadList) {
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_TENANT_WORKLOADS_LIST]
+ unscoped: true
+ }
+ };
+ }
+}
+
+message Workload {
+ // id, The Workload UIDP at which this Workload resides.
+ string id = 1;
+
+ // name of the Workload.
+ string name = 2;
+
+ // a short description of this Workload.
+ string description = 3;
+
+ // remote_id is the remote ID of this Workload.
+ string remote_id = 4;
+
+ string labels = 5;
+
+ string api_version = 6;
+ string kind = 7;
+
+ // last_seen tracks the timestamp at which this workload was last seen.
+ google.protobuf.Timestamp last_seen = 8;
+
+ // owner_id is the remote_id of the Workload that is referenced via a
+ // "controller" owner reference by this workload.
+ string owner_id = 9;
+}
+
+message WorkloadList {
+ repeated Workload items = 1;
+}
+
+message WorkloadFilter {
+ // remote_id is the remote ID of this Workload.
+ string remote_id = 2;
+
+ // active_since is the timestamp after which returned workloads
+ // should have been active (last seen).
+ google.protobuf.Timestamp active_since = 3;
+
+ // name filters on the resource name.
+ string name = 4;
+
+ // Return only the workloads owned by a particular remote_id.
+ string owner_id = 5;
+
+
+ chainguard.platform.common.UIDPFilter uidp = 100;
+}
diff --git a/proto/platform/tenant/v1/workload.platform_grpc.pb.go b/proto/platform/tenant/v1/workload.platform_grpc.pb.go
new file mode 100644
index 00000000..99be2bb1
--- /dev/null
+++ b/proto/platform/tenant/v1/workload.platform_grpc.pb.go
@@ -0,0 +1,109 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc v3.21.12
+// source: workload.platform.proto
+
+package v1
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+ Workloads_List_FullMethodName = "/chainguard.platform.tenant.Workloads/List"
+)
+
+// WorkloadsClient is the client API for Workloads service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type WorkloadsClient interface {
+ List(ctx context.Context, in *WorkloadFilter, opts ...grpc.CallOption) (*WorkloadList, error)
+}
+
+type workloadsClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewWorkloadsClient(cc grpc.ClientConnInterface) WorkloadsClient {
+ return &workloadsClient{cc}
+}
+
+func (c *workloadsClient) List(ctx context.Context, in *WorkloadFilter, opts ...grpc.CallOption) (*WorkloadList, error) {
+ out := new(WorkloadList)
+ err := c.cc.Invoke(ctx, Workloads_List_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// WorkloadsServer is the server API for Workloads service.
+// All implementations must embed UnimplementedWorkloadsServer
+// for forward compatibility
+type WorkloadsServer interface {
+ List(context.Context, *WorkloadFilter) (*WorkloadList, error)
+ mustEmbedUnimplementedWorkloadsServer()
+}
+
+// UnimplementedWorkloadsServer must be embedded to have forward compatible implementations.
+type UnimplementedWorkloadsServer struct {
+}
+
+func (UnimplementedWorkloadsServer) List(context.Context, *WorkloadFilter) (*WorkloadList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
+}
+func (UnimplementedWorkloadsServer) mustEmbedUnimplementedWorkloadsServer() {}
+
+// UnsafeWorkloadsServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to WorkloadsServer will
+// result in compilation errors.
+type UnsafeWorkloadsServer interface {
+ mustEmbedUnimplementedWorkloadsServer()
+}
+
+func RegisterWorkloadsServer(s grpc.ServiceRegistrar, srv WorkloadsServer) {
+ s.RegisterService(&Workloads_ServiceDesc, srv)
+}
+
+func _Workloads_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(WorkloadFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(WorkloadsServer).List(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Workloads_List_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(WorkloadsServer).List(ctx, req.(*WorkloadFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Workloads_ServiceDesc is the grpc.ServiceDesc for Workloads service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Workloads_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "chainguard.platform.tenant.Workloads",
+ HandlerType: (*WorkloadsServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "List",
+ Handler: _Workloads_List_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "workload.platform.proto",
+}
diff --git a/proto/platform/test/mock_clients.go b/proto/platform/test/mock_clients.go
new file mode 100644
index 00000000..b6dd728a
--- /dev/null
+++ b/proto/platform/test/mock_clients.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "chainguard.dev/sdk/proto/platform"
+ advisory "chainguard.dev/sdk/proto/platform/advisory/v1"
+ advisorytest "chainguard.dev/sdk/proto/platform/advisory/v1/test"
+ auth "chainguard.dev/sdk/proto/platform/auth/v1"
+ authtest "chainguard.dev/sdk/proto/platform/auth/v1/test"
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+ iamtest "chainguard.dev/sdk/proto/platform/iam/v1/test"
+ oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+ oidctest "chainguard.dev/sdk/proto/platform/oidc/v1/test"
+ ping "chainguard.dev/sdk/proto/platform/ping/v1"
+ pingtest "chainguard.dev/sdk/proto/platform/ping/v1/test"
+ registry "chainguard.dev/sdk/proto/platform/registry/v1"
+ registrytest "chainguard.dev/sdk/proto/platform/registry/v1/test"
+ tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
+ tenanttest "chainguard.dev/sdk/proto/platform/tenant/v1/test"
+)
+
+var _ platform.Clients = (*MockPlatformClients)(nil)
+
+type MockPlatformClients struct {
+ OnError error
+
+ IAMClient iamtest.MockIAMClient
+ TenantClient tenanttest.MockTenantClient
+ RegistryClient registrytest.MockRegistryClients
+ AdvisoryClient advisorytest.MockSecurityAdvisoryClients
+ PingClient pingtest.MockPingServiceClients
+}
+
+func (m MockPlatformClients) Close() error {
+ return m.OnError
+}
+
+func (m MockPlatformClients) IAM() iam.Clients {
+ return m.IAMClient
+}
+
+func (m MockPlatformClients) Tenant() tenant.Clients {
+ return m.TenantClient
+}
+
+func (m MockPlatformClients) Registry() registry.Clients {
+ return m.RegistryClient
+}
+
+func (m MockPlatformClients) Advisory() advisory.Clients {
+ return m.AdvisoryClient
+}
+
+func (m MockPlatformClients) Ping() ping.Clients {
+ return m.PingClient
+}
+
+var _ platform.OIDCClients = (*MockOIDCClients)(nil)
+
+type MockOIDCClients struct {
+ OnError error
+
+ AuthClient authtest.MockAuthClient
+ OIDCClient oidctest.MockOIDCClient
+ PingClient pingtest.MockPingServiceClients
+}
+
+func (m MockOIDCClients) Close() error {
+ return m.OnError
+}
+
+func (m MockOIDCClients) Auth() auth.AuthClient {
+ return m.AuthClient
+}
+
+func (m MockOIDCClients) OIDC() oidc.Clients {
+ return m.OIDCClient
+}
+
+func (m MockOIDCClients) OIDCPing() ping.Clients {
+ return m.PingClient
+}
diff --git a/proto/platform/test/mock_server.go b/proto/platform/test/mock_server.go
new file mode 100644
index 00000000..7a0471c2
--- /dev/null
+++ b/proto/platform/test/mock_server.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package test
+
+import (
+ "context"
+ "fmt"
+ "testing"
+
+ delegate "chainguard.dev/go-grpc-kit/pkg/options"
+ iam "chainguard.dev/sdk/proto/platform/iam/v1"
+ iamtest "chainguard.dev/sdk/proto/platform/iam/v1/test"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/test/bufconn"
+)
+
+type MockPlatformServer struct {
+ GroupServer iamtest.MockGroupsServer
+}
+
+// StartPlatformServer starts the mock server and returns the connection string.
+func (m *MockPlatformServer) StartPlatformServer(_ context.Context, t *testing.T) string {
+ t.Helper()
+ lis := bufconn.Listen(1024 * 1024)
+ testScheme := delegate.RegisterListenerForTest(lis)
+ t.Cleanup(func() {
+ delegate.UnregisterTestListener(testScheme)
+ })
+ s := grpc.NewServer()
+ iam.RegisterGroupsServer(s, m.GroupServer)
+ go func() {
+ t.Helper()
+ if err := s.Serve(lis); err != nil {
+ panic(fmt.Sprintf("Server exited with error: %v", err))
+ }
+ }()
+ t.Cleanup(func() {
+ s.GracefulStop()
+ })
+
+ return fmt.Sprintf("%s://%s", testScheme, lis.Addr().String())
+}
diff --git a/sts/sts.go b/sts/sts.go
new file mode 100644
index 00000000..b18619fd
--- /dev/null
+++ b/sts/sts.go
@@ -0,0 +1,314 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package sts
+
+import (
+ "bytes"
+ "context"
+ "crypto/tls"
+ "fmt"
+ "io"
+ "net/http"
+ "net/url"
+
+ oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+ "golang.org/x/oauth2"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/protobuf/encoding/protojson"
+ "google.golang.org/protobuf/proto"
+)
+
+const GulfstreamAudience = "gulfstream"
+
+// Exchanger is an interface for exchanging a third-party token for a Chainguard
+// token.
+type Exchanger interface {
+ // Exchange performs the actual token exchange, sending "token" to the
+ // Chainguard issuer's STS interface, and receiving bytes or an error.
+ Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error)
+
+ // Refresh exchanges a refresh token for a new access token and refresh token.
+ Refresh(ctx context.Context, token string, opts ...ExchangerOption) (accessToken string, refreshToken string, err error)
+}
+
+// New creates a new Exchanger that works against the provided issuer's STS
+// endpoint, and requests token with the specified audience. It's behavior
+// can be further customized via optional ExchangerOption parameters.
+func New(issuer, audience string, opts ...ExchangerOption) Exchanger {
+ i := &impl{
+ opts: options{
+ issuer: issuer,
+ audience: audience,
+ },
+ }
+ for _, opt := range opts {
+ opt(&i.opts)
+ }
+
+ return i
+}
+
+// Exchange performs an OIDC token exchange with the correct Exchanger based on the provided options.
+func Exchange(ctx context.Context, issuer, audience, idToken string, exchangerOptions ...ExchangerOption) (string, error) {
+ opts := options{
+ issuer: issuer,
+ audience: audience,
+ }
+ for _, eo := range exchangerOptions {
+ eo(&opts)
+ }
+
+ var e Exchanger
+ if opts.http1Downgrade {
+ e = &HTTP1DowngradeExchanger{opts: opts}
+ } else {
+ e = &impl{opts: opts}
+ }
+ return e.Exchange(ctx, idToken, exchangerOptions...)
+}
+
+type impl struct {
+ opts options
+}
+
+type options struct {
+ issuer string
+ audience string
+ cluster string
+ userAgent string
+ scope string
+ capabilities []string
+ identity string
+ includeUpstreamToken bool
+ http1Downgrade bool
+}
+
+var _ Exchanger = (*impl)(nil)
+
+// Stubbed when testing
+var oidcNewClients = oidc.NewClients
+
+// Exchange implements Exchanger
+func (i *impl) Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error) {
+ o := i.opts
+ for _, opt := range opts {
+ opt(&o)
+ }
+
+ c, err := oidcNewClients(ctx, o.issuer, fmt.Sprintf("Bearer %s", token), oidc.WithUserAgent(o.userAgent))
+ if err != nil {
+ return "", err
+ }
+ defer c.Close()
+
+ resp, err := c.STS().Exchange(ctx, &oidc.ExchangeRequest{
+ Aud: []string{o.audience},
+ Scope: o.scope,
+ Cluster: o.cluster,
+ Identity: o.identity,
+ IncludeUpstreamToken: o.includeUpstreamToken,
+ Cap: o.capabilities,
+ })
+ if err != nil {
+ return "", err
+ }
+ return resp.Token, nil
+}
+
+// Refresh implements Exchanger
+func (i *impl) Refresh(ctx context.Context, token string, opts ...ExchangerOption) (string, string, error) {
+ o := i.opts
+ for _, opt := range opts {
+ opt(&o)
+ }
+
+ c, err := oidcNewClients(ctx, o.issuer, fmt.Sprintf("Bearer %s", token), oidc.WithUserAgent(o.userAgent))
+ if err != nil {
+ return "", "", err
+ }
+ defer c.Close()
+
+ resp, err := c.STS().ExchangeRefreshToken(ctx, &oidc.ExchangeRefreshTokenRequest{
+ Aud: []string{o.audience},
+ Scope: o.scope,
+ Cap: o.capabilities,
+ })
+ if err != nil {
+ return "", "", err
+ }
+ return resp.GetToken().GetToken(), resp.GetRefreshToken().GetToken(), err
+}
+
+// ExchangerOption is a way of customizing the behavior of the Exchanger
+// constructed via New()
+type ExchangerOption func(*options)
+
+// WithUserAgent sets the user agent sent by the Exchanger.
+func WithUserAgent(agent string) ExchangerOption {
+ return func(i *options) {
+ i.userAgent = agent
+ }
+}
+
+// WithCluster sets the cluster parameter sent by the Exchanger.
+//
+// Only one of cluster or scope may be set.
+func WithCluster(cluster string) ExchangerOption {
+ return func(i *options) {
+ i.cluster = cluster
+ }
+}
+
+// WithScope sets the scope parameter sent by the Exchanger.
+//
+// Only one of cluster or scope may be set.
+func WithScope(scope string) ExchangerOption {
+ return func(i *options) {
+ i.scope = scope
+ }
+}
+
+// WithCapabilities sets the capabilities sent by the Exchanger.
+func WithCapabilities(cap ...string) ExchangerOption {
+ return func(i *options) {
+ i.capabilities = cap
+ }
+}
+
+// WithIdentity sets the the unique ID of the identity so that STS exchange can
+// look up pre-stored verification keys without ambiguity
+func WithIdentity(uid string) ExchangerOption {
+ return func(i *options) {
+ i.identity = uid
+ }
+}
+
+// WithIncludeUpstreamToken requests that the upstream token be included in the returned
+// STS token.
+func WithIncludeUpstreamToken() ExchangerOption {
+ return func(i *options) {
+ i.includeUpstreamToken = true
+ }
+}
+
+// WithHTTP1Downgrade signals Exchange to use HTTP1DowngradeExchanger in the STS exchange.
+func WithHTTP1Downgrade() ExchangerOption {
+ return func(i *options) {
+ i.http1Downgrade = true
+ }
+}
+
+type HTTP1DowngradeExchanger struct {
+ opts options
+}
+
+func NewHTTP1DowngradeExchanger(issuer, audience string, opts ...ExchangerOption) *HTTP1DowngradeExchanger {
+ i := &HTTP1DowngradeExchanger{
+ opts: options{
+ issuer: issuer,
+ audience: audience,
+ },
+ }
+ for _, opt := range opts {
+ opt(&i.opts)
+ }
+ return i
+}
+
+func (i *HTTP1DowngradeExchanger) doHTTP1(ctx context.Context,
+ auth string,
+ path string, in proto.Message, out proto.Message, opts options) error {
+ body, err := protojson.Marshal(in)
+ if err != nil {
+ return err
+ }
+ u, err := url.JoinPath(i.opts.issuer, path)
+ if err != nil {
+ return err
+ }
+ req, err := http.NewRequestWithContext(ctx, http.MethodPost, u, bytes.NewReader(body))
+ if err != nil {
+ return err
+ }
+ req.Header.Set("Content-Type", "application/json")
+ if opts.userAgent != "" {
+ req.Header.Set("User-Agent", opts.userAgent)
+ }
+
+ if md, ok := metadata.FromOutgoingContext(ctx); ok {
+ for k, v := range md {
+ for _, vv := range v {
+ req.Header.Add(k, vv)
+ }
+ }
+ }
+
+ // Explicitly disable HTTP/2 support by setting the
+ // client Transport's TLSNextProto to an empty map.
+ // ref: https://pkg.go.dev/net/http#hdr-HTTP_2
+ client := &http.Client{
+ Transport: &oauth2.Transport{
+ Base: &http.Transport{
+ TLSNextProto: map[string]func(string, *tls.Conn) http.RoundTripper{},
+ },
+ Source: oauth2.StaticTokenSource(&oauth2.Token{AccessToken: auth}),
+ },
+ }
+ resp, err := client.Do(req)
+ if err != nil {
+ return err
+ }
+ if resp.StatusCode != http.StatusOK {
+ return fmt.Errorf("%s", resp.Status)
+ }
+
+ b, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return err
+ }
+ defer resp.Body.Close()
+ return protojson.Unmarshal(b, out)
+}
+
+func (i *HTTP1DowngradeExchanger) Exchange(ctx context.Context, token string, opts ...ExchangerOption) (string, error) {
+ o := i.opts
+ for _, opt := range opts {
+ opt(&o)
+ }
+ in := &oidc.ExchangeRequest{
+ Aud: []string{o.audience},
+ Scope: o.scope,
+ Cluster: o.cluster,
+ Identity: o.identity,
+ IncludeUpstreamToken: o.includeUpstreamToken,
+ Cap: o.capabilities,
+ }
+ out := new(oidc.RawToken)
+ if err := i.doHTTP1(ctx, token, "/sts/exchange", in, out, o); err != nil {
+ return "", err
+ }
+ return out.Token, nil
+}
+
+func (i *HTTP1DowngradeExchanger) Refresh(ctx context.Context, token string, opts ...ExchangerOption) (string, string, error) {
+ o := i.opts
+ for _, opt := range opts {
+ opt(&o)
+ }
+
+ in := &oidc.ExchangeRefreshTokenRequest{
+ Aud: []string{o.audience},
+ Scope: o.scope,
+ Cap: o.capabilities,
+ }
+
+ out := new(oidc.TokenPair)
+ if err := i.doHTTP1(ctx, token, "sts/access_token", in, out, o); err != nil {
+ return "", "", err
+ }
+
+ return out.GetToken().Token, out.GetRefreshToken().Token, nil
+}
diff --git a/sts/sts_test.go b/sts/sts_test.go
new file mode 100644
index 00000000..d2c81592
--- /dev/null
+++ b/sts/sts_test.go
@@ -0,0 +1,424 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package sts
+
+import (
+ "context"
+ "errors"
+ "testing"
+
+ oidc "chainguard.dev/sdk/proto/platform/oidc/v1"
+ "chainguard.dev/sdk/proto/platform/oidc/v1/test"
+ "github.com/google/go-cmp/cmp"
+)
+
+func TestRefresh(t *testing.T) {
+ tests := map[string]struct {
+ issuer string
+ audience string
+ newOpts []ExchangerOption
+ exchangeOpts []ExchangerOption
+ wantToken string
+ wantRefreshToken string
+ wantErr bool
+ clientMock test.MockOIDCClient
+ }{
+ "zero options": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnGetAccessToken: []test.STSOnGetAccessToken{{
+ Given: &oidc.ExchangeRefreshTokenRequest{
+ Aud: []string{"baz"},
+ },
+ Exchanged: &oidc.TokenPair{
+ Token: &oidc.RawToken{Token: "token!"},
+ RefreshToken: &oidc.RawToken{Token: "refresh token!"},
+ },
+ }},
+ },
+ },
+ wantToken: "token!",
+ wantRefreshToken: "refresh token!",
+ },
+ "basic error plumbing": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnGetAccessToken: []test.STSOnGetAccessToken{{
+ Given: &oidc.ExchangeRefreshTokenRequest{
+ Aud: []string{"baz"},
+ },
+ Error: errors.New("unexpected EOF"),
+ }},
+ },
+ },
+ wantErr: true,
+ },
+ "capabilities and scope": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCapabilities("registry.push"),
+ WithScope("derp"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnGetAccessToken: []test.STSOnGetAccessToken{{
+ Given: &oidc.ExchangeRefreshTokenRequest{
+ Aud: []string{"baz"},
+ Cap: []string{"registry.push"},
+ Scope: "derp",
+ },
+ Exchanged: &oidc.TokenPair{
+ Token: &oidc.RawToken{Token: "token!"},
+ RefreshToken: &oidc.RawToken{Token: "refresh token"},
+ },
+ }},
+ },
+ },
+ wantToken: "token!",
+ wantRefreshToken: "refresh token",
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
+ return test.clientMock, nil
+ }
+
+ exch := New(test.issuer, test.audience, test.newOpts...)
+ token, refreshToken, gotErr := exch.Refresh(context.Background(), "foo", test.exchangeOpts...)
+ if gotErr != nil && !test.wantErr {
+ t.Error("got err: ", gotErr, "and expected no error")
+ }
+ if diff := cmp.Diff(token, test.wantToken); diff != "" {
+ t.Error("Got unexpected diff in token: ", diff)
+ }
+ if diff := cmp.Diff(refreshToken, test.wantRefreshToken); diff != "" {
+ t.Error("Got unexpected diff in refresh token: ", diff)
+ }
+ })
+ }
+}
+func TestImplExchange(t *testing.T) {
+ tests := map[string]struct {
+ issuer string
+ audience string
+ newOpts []ExchangerOption
+ exchangeOpts []ExchangerOption
+ want string
+ wantErr bool
+ clientMock test.MockOIDCClient
+ }{
+ "zero options": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "basic error plumbing": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ },
+ Error: errors.New("unexpected EOF"),
+ }},
+ },
+ },
+ wantErr: true,
+ },
+ "capabilities and scope on create": {
+ issuer: "bar",
+ audience: "baz",
+ newOpts: []ExchangerOption{
+ WithCapabilities("registry.push"),
+ WithScope("derp"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cap: []string{"registry.push"},
+ Scope: "derp",
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "capabilities and scope on exchange": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCapabilities("registry.push"),
+ WithScope("derp"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cap: []string{"registry.push"},
+ Scope: "derp",
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "identity": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithIdentity("my-identity"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Identity: "my-identity",
+ },
+ Exchanged: &oidc.RawToken{Token: "token foo"},
+ }},
+ },
+ },
+ want: "token foo",
+ },
+ "include upstream": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithIncludeUpstreamToken(),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ IncludeUpstreamToken: true,
+ },
+ Exchanged: &oidc.RawToken{Token: "tokenz"},
+ }},
+ },
+ },
+ want: "tokenz",
+ },
+ "cluster": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCluster("kind i presume"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cluster: "kind i presume",
+ },
+ Exchanged: &oidc.RawToken{Token: "tokenz"},
+ }},
+ },
+ },
+ want: "tokenz",
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
+ return test.clientMock, nil
+ }
+
+ exch := New(test.issuer, test.audience, test.newOpts...)
+ gotToken, gotErr := exch.Exchange(context.Background(), "foo", test.exchangeOpts...)
+ if gotErr != nil && !test.wantErr {
+ t.Error("got err: ", gotErr, "and expected no error")
+ }
+ if diff := cmp.Diff(gotToken, test.want); diff != "" {
+ t.Error("Got unexpected diff in token: ", diff)
+ }
+ })
+ }
+}
+
+func TestExchange(t *testing.T) {
+ tests := map[string]struct {
+ issuer string
+ audience string
+ exchangeOpts []ExchangerOption
+ want string
+ wantErr bool
+ clientMock test.MockOIDCClient
+ }{
+ "zero options": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "basic error plumbing": {
+ issuer: "bar",
+ audience: "baz",
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ },
+ Error: errors.New("unexpected EOF"),
+ }},
+ },
+ },
+ wantErr: true,
+ },
+ "capabilities and scope on create": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCapabilities("registry.push"),
+ WithScope("derp"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cap: []string{"registry.push"},
+ Scope: "derp",
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "capabilities and scope on exchange": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCapabilities("registry.push"),
+ WithScope("derp"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cap: []string{"registry.push"},
+ Scope: "derp",
+ },
+ Exchanged: &oidc.RawToken{Token: "token!"},
+ }},
+ },
+ },
+ want: "token!",
+ },
+ "identity": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithIdentity("my-identity"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Identity: "my-identity",
+ },
+ Exchanged: &oidc.RawToken{Token: "token foo"},
+ }},
+ },
+ },
+ want: "token foo",
+ },
+ "include upstream": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithIncludeUpstreamToken(),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ IncludeUpstreamToken: true,
+ },
+ Exchanged: &oidc.RawToken{Token: "tokenz"},
+ }},
+ },
+ },
+ want: "tokenz",
+ },
+ "cluster": {
+ issuer: "bar",
+ audience: "baz",
+ exchangeOpts: []ExchangerOption{
+ WithCluster("kind i presume"),
+ },
+ clientMock: test.MockOIDCClient{
+ STSClient: test.MockSTSClient{
+ OnExchange: []test.STSOnExchange{{
+ Given: &oidc.ExchangeRequest{
+ Aud: []string{"baz"},
+ Cluster: "kind i presume",
+ },
+ Exchanged: &oidc.RawToken{Token: "tokenz"},
+ }},
+ },
+ },
+ want: "tokenz",
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ oidcNewClients = func(_ context.Context, issuer string, token string, opts ...oidc.ClientOption) (oidc.Clients, error) {
+ return test.clientMock, nil
+ }
+
+ gotToken, gotErr := Exchange(context.Background(), test.issuer, test.audience, "foo", test.exchangeOpts...)
+ if gotErr != nil && !test.wantErr {
+ t.Error("got err: ", gotErr, "and expected no error")
+ }
+ if diff := cmp.Diff(gotToken, test.want); diff != "" {
+ t.Error("Got unexpected diff in token: ", diff)
+ }
+ })
+ }
+}
diff --git a/sts/tokensource.go b/sts/tokensource.go
new file mode 100644
index 00000000..0f79b6a7
--- /dev/null
+++ b/sts/tokensource.go
@@ -0,0 +1,44 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package sts
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "golang.org/x/oauth2"
+)
+
+// NewTokenSource creates an oauth2.TokenSource by wrapping another TokenSource
+// in a Chainguard STS exchange brokered by the provided Exchanger.
+func NewTokenSource(ts oauth2.TokenSource, xchg Exchanger) oauth2.TokenSource {
+ return &stsTokenSource{
+ ts: ts,
+ xchg: xchg,
+ }
+}
+
+type stsTokenSource struct {
+ ts oauth2.TokenSource
+ xchg Exchanger
+}
+
+// Token implements oauth2.TokenSource
+func (sts *stsTokenSource) Token() (*oauth2.Token, error) {
+ tok, err := sts.ts.Token()
+ if err != nil {
+ return nil, fmt.Errorf("fetching base token: %w", err)
+ }
+ idt, err := sts.xchg.Exchange(context.Background(), tok.AccessToken)
+ if err != nil {
+ return nil, fmt.Errorf("exchanging base token: %w", err)
+ }
+ return &oauth2.Token{
+ AccessToken: idt,
+ Expiry: time.Now().Add(time.Hour),
+ }, nil
+}
diff --git a/uidp/ancestry.go b/uidp/ancestry.go
new file mode 100644
index 00000000..11f106aa
--- /dev/null
+++ b/uidp/ancestry.go
@@ -0,0 +1,75 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package uidp
+
+import (
+ "path"
+ "regexp"
+ "strings"
+)
+
+// IsAncestor checks whether the "parent" UIDP is an ancestor (non-inclusive)
+// of the given "child" UIDP.
+func IsAncestor(parent, child string) bool {
+ return strings.HasPrefix(child, parent+"/")
+}
+
+// InRoot checks whether the UIDP is in the root, as opposed to within a group
+func InRoot(child string) bool {
+ return !strings.Contains(child, "/")
+}
+
+// IsAncestorOrSelf checks whether the "parent" UIDP is an ancestor (inclusive)
+// of the given "child" UIDP.
+func IsAncestorOrSelf(parent, child string) bool {
+ return child == parent || IsAncestor(parent, child)
+}
+
+// Parent returns the "parent" UIDP for a child UIDP. Returns / if parent is root.
+//
+// Example:
+//
+// Parent("a/b/c") returns "a/b"
+// Parent("a") returns "/"
+func Parent(child string) string {
+ // path.Dir returns "." if the child is already at the root
+ if p := path.Dir(child); p != "." {
+ return p
+ }
+ return "/"
+}
+
+// Parents returns all "parent" UIDP for a child UIDP. Returns empty slice if parent is root.
+//
+// Example:
+//
+// Parents("a/b/c/d") returns ["a/b/c", "a/b", "a"]
+func Parents(child string) []string {
+ parents := make([]string, 0, strings.Count(child, "/"))
+ for p := Parent(child); p != "/"; p = Parent(p) {
+ parents = append(parents, p)
+ }
+ return parents
+}
+
+// Ancestry returns all parent UIDPs and the child. Returns only the child if it is root.
+//
+// Example:
+//
+// Ancestry("a/b/c/d") returns ["a/b/c/d", "a/b/c", "a/b", "a"]
+func Ancestry(child string) []string {
+ ancestry := make([]string, 0, strings.Count(child, "/")+1)
+ ancestry = append(ancestry, child)
+ for p := Parent(child); p != "/"; p = Parent(p) {
+ ancestry = append(ancestry, p)
+ }
+ return ancestry
+}
+
+// Valid returns true for valid UIDP values.
+// The base segment of a UIDP is 20 hex-encoded bytes (40 characters). This may
+// be followed by zero or more parts with 8 hex-encoded bytes (16 characters).
+var Valid = regexp.MustCompile(`^[0-9a-f]{40}(?:/[0-9a-f]{16})*$`).MatchString
diff --git a/uidp/ancestry_test.go b/uidp/ancestry_test.go
new file mode 100644
index 00000000..5c2eb69d
--- /dev/null
+++ b/uidp/ancestry_test.go
@@ -0,0 +1,177 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package uidp
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestAncestorExclusive(t *testing.T) {
+ tests := []struct {
+ name string
+ parent string
+ child string
+ want bool
+ }{{
+ name: "direct parent",
+ parent: "a/b",
+ child: "a/b/c",
+ want: true,
+ }, {
+ name: "grand parent",
+ parent: "a",
+ child: "a/b/c",
+ want: true,
+ }, {
+ name: "self",
+ parent: "a/b/c",
+ child: "a/b/c",
+ want: false, // This should be the main difference from below
+ }, {
+ name: "child",
+ parent: "a/b/c/d",
+ child: "a/b/c",
+ want: false,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ got := IsAncestor(test.parent, test.child)
+ if got != test.want {
+ t.Errorf("IsAncestor(%q, %q) = %v, wanted %v", test.parent, test.child, got, test.want)
+ }
+ })
+ }
+}
+
+func TestAncestorInclusive(t *testing.T) {
+ tests := []struct {
+ name string
+ parent string
+ child string
+ want bool
+ }{{
+ name: "direct parent",
+ parent: "a/b",
+ child: "a/b/c",
+ want: true,
+ }, {
+ name: "grand parent",
+ parent: "a",
+ child: "a/b/c",
+ want: true,
+ }, {
+ name: "self",
+ parent: "a/b/c",
+ child: "a/b/c",
+ want: true, // This should be the main difference from above
+ }, {
+ name: "child",
+ parent: "a/b/c/d",
+ child: "a/b/c",
+ want: false,
+ }}
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ got := IsAncestorOrSelf(test.parent, test.child)
+ if got != test.want {
+ t.Errorf("IsAncestor(%q, %q) = %v, wanted %v", test.parent, test.child, got, test.want)
+ }
+ })
+ }
+}
+
+func TestInRoot(t *testing.T) {
+ tests := []struct {
+ id string
+ want bool
+ }{
+ {"x", true},
+ {"xyz", true},
+ {"x/y", false},
+ {"x/y/z", false},
+ }
+
+ for _, test := range tests {
+ t.Run(test.id, func(t *testing.T) {
+ got := InRoot(test.id)
+ if got != test.want {
+ t.Errorf("InRoot(%q) = %v, wanted %v", test.id, got, test.want)
+ }
+ })
+ }
+}
+
+func TestParent(t *testing.T) {
+ tests := []struct {
+ id string
+ want string
+ }{
+ {"x", "/"},
+ {"xyz", "/"},
+ {"x/y", "x"},
+ {"x/y/z", "x/y"},
+ }
+
+ for _, test := range tests {
+ t.Run(test.id, func(t *testing.T) {
+ got := Parent(test.id)
+ if got != test.want {
+ t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
+ }
+ })
+ }
+}
+
+func TestParents(t *testing.T) {
+ tests := []struct {
+ id string
+ want []string
+ }{
+ {"x", []string{}},
+ {"xyz", []string{}},
+ {"x/y", []string{"x"}},
+ {"x/y/z", []string{"x/y", "x"}},
+ {"", []string{}},
+ {"/", []string{}},
+ {"//", []string{}},
+ }
+
+ for _, test := range tests {
+ t.Run(test.id, func(t *testing.T) {
+ got := Parents(test.id)
+ if !reflect.DeepEqual(got, test.want) {
+ t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
+ }
+ })
+ }
+}
+
+func TestAncestry(t *testing.T) {
+ tests := []struct {
+ id string
+ want []string
+ }{
+ {"x", []string{"x"}},
+ {"xyz", []string{"xyz"}},
+ {"x/y", []string{"x/y", "x"}},
+ {"x/y/z", []string{"x/y/z", "x/y", "x"}},
+ {"", []string{""}},
+ {"/", []string{"/"}},
+ {"//", []string{"//"}},
+ }
+
+ for _, test := range tests {
+ t.Run(test.id, func(t *testing.T) {
+ got := Ancestry(test.id)
+ if !reflect.DeepEqual(got, test.want) {
+ t.Errorf("Parent(%q) = %q, wanted %q", test.id, got, test.want)
+ }
+ })
+ }
+}
diff --git a/uidp/doc.go b/uidp/doc.go
new file mode 100644
index 00000000..97dc9fe8
--- /dev/null
+++ b/uidp/doc.go
@@ -0,0 +1,8 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package uidp contains utilities for reasoning about and manipulating the
+// Chainguard IAM "UIDP" (UID Path) concept.
+package uidp
diff --git a/uidp/uid.go b/uidp/uid.go
new file mode 100644
index 00000000..302034f5
--- /dev/null
+++ b/uidp/uid.go
@@ -0,0 +1,65 @@
+/*
+Copyright 2021 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package uidp
+
+import (
+ "crypto/rand"
+ "encoding/hex"
+ "fmt"
+)
+
+// NOTE: We are using UID over UUID for 2 reasons:
+// 1. UUIDs are very large.
+// 2. UUIDs are not very random.
+// Ref: https://neilmadden.blog/2018/08/30/moving-away-from-uuids/
+
+// UID will is used for the primary key for items that must be globally unique.
+// - A UID is 20 bytes of random bytes, URL safe hex encoded.
+type UID string
+
+// SUID is be used to form the primary key for items that must be unique within some scoping (non-global).
+// - A SUID is 8 random bytes, URL safe hex encoded.
+type SUID string
+
+// UIDP is be used to denote the fully-qualified path for scoped keys.
+// - A UIDP will consist of '/' delimited SUID segments with a UID root, following POSIX directory semantics.
+// - The "basename" SUID is our key within the scoping of the "dirname" UIDP.
+type UIDP string
+
+func NewUID() UID {
+ token := make([]byte, 20)
+ _, _ = rand.Read(token)
+ return UID(hex.EncodeToString(token))
+}
+
+func NewSUID() SUID {
+ token := make([]byte, 8)
+ _, _ = rand.Read(token)
+ return SUID(hex.EncodeToString(token))
+}
+
+func NewUIDP(path UIDP) UIDP {
+ if len(path) == 0 {
+ return UIDP(NewUID())
+ }
+ return UIDP(fmt.Sprintf("%s/%s", path, NewSUID()))
+}
+
+func (u UIDP) NewChild() UIDP {
+ return NewUIDP(u)
+}
+
+func (u UID) String() string {
+ return string(u)
+}
+
+func (u SUID) String() string {
+ return string(u)
+}
+
+func (u UIDP) String() string {
+ return string(u)
+}
diff --git a/uidp/uid_test.go b/uidp/uid_test.go
new file mode 100644
index 00000000..e7f9e540
--- /dev/null
+++ b/uidp/uid_test.go
@@ -0,0 +1,20 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package uidp
+
+import "testing"
+
+func TestUIDPValidity(t *testing.T) {
+ var uidp UIDP
+
+ for i := 0; i < 5; i++ {
+ uidp = uidp.NewChild()
+
+ if !Valid(string(uidp)) {
+ t.Errorf("Invalid UIDP: %s", uidp)
+ }
+ }
+}
diff --git a/validation/aws_account.go b/validation/aws_account.go
new file mode 100644
index 00000000..3a378cb6
--- /dev/null
+++ b/validation/aws_account.go
@@ -0,0 +1,30 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "fmt"
+ "regexp"
+)
+
+const awsAccountPattern = `^[0-9]{12}$`
+
+var (
+ awsAccountPatternCompiled = regexp.MustCompile(awsAccountPattern)
+
+ // ErrInvalidAWSAccount describes invalid AWS Account IDs by sharing the
+ // regular expression they must match
+ ErrInvalidAWSAccount = fmt.Errorf("AWS account ID must match %q", awsAccountPattern)
+)
+
+// ValidateAWSAccount checks an AWS account id is valid. AWS Accounts must be a
+// 12 digit number.
+func ValidateAWSAccount(id string) error {
+ if awsAccountPatternCompiled.MatchString(id) {
+ return nil
+ }
+ return ErrInvalidAWSAccount
+}
diff --git a/validation/aws_account_test.go b/validation/aws_account_test.go
new file mode 100644
index 00000000..19fba577
--- /dev/null
+++ b/validation/aws_account_test.go
@@ -0,0 +1,32 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "testing"
+)
+
+func TestValidateAWSAccount(t *testing.T) {
+ tests := map[string]struct {
+ Input string
+ Expect bool
+ }{
+ "valid": {"123456789012", true},
+ "empty": {"", false},
+ "letters": {"12345678901a", false},
+ "too short": {"123", false},
+ "too long": {"1234567890123", false},
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ got := ValidateAWSAccount(tt.Input)
+ if (got == nil) != tt.Expect {
+ t.Errorf("Expected GroupName(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
+ }
+ })
+ }
+}
diff --git a/validation/bundles.go b/validation/bundles.go
new file mode 100644
index 00000000..d9f3282f
--- /dev/null
+++ b/validation/bundles.go
@@ -0,0 +1,30 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "fmt"
+ "regexp"
+)
+
+const bundlePattern = `^[a-z]+(:[a-z]+)?$`
+
+var (
+ bundlePatternCompiled = regexp.MustCompile(bundlePattern)
+
+ // ErrInvalidBundles describes invalid bundle(s) by sharing the regular expression
+ // they must match
+ ErrInvalidBundles = fmt.Errorf("each bundle item must match %q", bundlePattern)
+)
+
+func ValidateBundles(bundles []string) error {
+ for _, bundle := range bundles {
+ if !bundlePatternCompiled.MatchString(bundle) {
+ return ErrInvalidBundles
+ }
+ }
+ return nil
+}
diff --git a/validation/bundles_test.go b/validation/bundles_test.go
new file mode 100644
index 00000000..19e35be7
--- /dev/null
+++ b/validation/bundles_test.go
@@ -0,0 +1,37 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "testing"
+)
+
+func TestValidateBundles(t *testing.T) {
+ tests := map[string]struct {
+ Input []string
+ Expect bool
+ }{
+ "valid": {[]string{"boo"}, true},
+ "valid colon": {[]string{"bundle:boo", "tag:something"}, true},
+ "start with colon": {[]string{":boo"}, false},
+ "end with colon": {[]string{"boo:"}, false},
+ "multiple colons": {[]string{"boo:haha:ra"}, false},
+ "empty": {[]string{""}, false},
+ "no slashes": {[]string{"foo/bar"}, false},
+ "spaces are not alright": {[]string{"chainguard engineering"}, false},
+ "other whitespace is bad": {[]string{"\r\n\tderp"}, false},
+ "no uppercase": {[]string{"DERP"}, false},
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ got := ValidateBundles(tt.Input)
+ if (got == nil) != tt.Expect {
+ t.Errorf("Expected Bundles(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
+ }
+ })
+ }
+}
diff --git a/validation/enforcer_options.go b/validation/enforcer_options.go
new file mode 100644
index 00000000..2b56bb9c
--- /dev/null
+++ b/validation/enforcer_options.go
@@ -0,0 +1,27 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "k8s.io/apimachinery/pkg/util/sets"
+)
+
+const (
+ EnforcerOptionWebhookFailOpen = "webhook_fail_open"
+ EnforcerOptionEnableCIPCache = "enable_cip_cache"
+ EnforcerOptionNamespaceEnforcementMode = "namespace_enforcement_mode"
+
+ NamespaceEnforcementModeOptOut = "opt-out"
+ NamespaceEnforcementModeOptIn = "opt-in"
+)
+
+var (
+ // ValidNamespaceEnforcementModeOpts are valid webhook label selection options for a managed cluster
+ ValidNamespaceEnforcementModeOpts = sets.NewString(NamespaceEnforcementModeOptIn, NamespaceEnforcementModeOptOut)
+
+ // ValidEnforcerOptions are valid field names of enforcer options available
+ ValidEnforcerOptions = sets.NewString(EnforcerOptionWebhookFailOpen, EnforcerOptionEnableCIPCache, EnforcerOptionNamespaceEnforcementMode)
+)
diff --git a/validation/name.go b/validation/name.go
new file mode 100644
index 00000000..545ff8d5
--- /dev/null
+++ b/validation/name.go
@@ -0,0 +1,28 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "fmt"
+ "regexp"
+)
+
+const namePattern = `^[a-z0-9 ._-]{1,}$`
+
+var (
+ namePatternCompiled = regexp.MustCompile(namePattern)
+
+ // ErrInvalidName describes invalid names by sharing the regular expression
+ // they must match
+ ErrInvalidName = fmt.Errorf("name must match %q", namePattern)
+)
+
+func ValidateName(name string) error {
+ if namePatternCompiled.MatchString(name) {
+ return nil
+ }
+ return ErrInvalidName
+}
diff --git a/validation/name_test.go b/validation/name_test.go
new file mode 100644
index 00000000..05a52f8b
--- /dev/null
+++ b/validation/name_test.go
@@ -0,0 +1,34 @@
+/*
+Copyright 2022 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "testing"
+)
+
+func TestValidateName(t *testing.T) {
+ tests := map[string]struct {
+ Input string
+ Expect bool
+ }{
+ "valid": {"boo.foo_-", true},
+ "empty": {"", false},
+ "no slashes": {"foo/bar", false},
+ "spaces are alright": {"chainguard engineering", true},
+ "no spaces are alright too": {"chainguarddemo", true},
+ "other whitespace is bad": {"\r\n\tderp", false},
+ "no uppercase": {"DERP", false},
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ got := ValidateName(tt.Input)
+ if (got == nil) != tt.Expect {
+ t.Errorf("Expected GroupName(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
+ }
+ })
+ }
+}
diff --git a/validation/readme.go b/validation/readme.go
new file mode 100644
index 00000000..a3a6e609
--- /dev/null
+++ b/validation/readme.go
@@ -0,0 +1,66 @@
+/*
+Copyright 2024 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "fmt"
+ "html"
+ "regexp"
+ "strings"
+
+ "github.com/google/go-cmp/cmp"
+ "github.com/microcosm-cc/bluemonday"
+ "github.com/russross/blackfriday/v2"
+)
+
+var ErrUnsafeReadme = fmt.Errorf("readme contained unsafe html content")
+
+// ValidateReadme validates the contents of a Markdown README.md file.
+// If the contents are invalid, a string will be returned containing the
+// diff of what the Markdown would look like as HTML if properly sanitized.
+func ValidateReadme(readme string) (string, error) {
+ // Treat empty readme as valid, prevent further processing
+ if readme == "" {
+ return "", nil
+ }
+ unsafe := readmeToHTML(readme)
+ safe := sanitizeHTML(unsafe)
+ // After converting the Markdown to HTML,
+ // make sure there is no diff after sanitizing it.
+ // Unescape any encoded HTML tags for proper comparison.
+ if diff := cmp.Diff(unescapeHTML(unsafe), unescapeHTML(safe)); diff != "" {
+ return diff, ErrUnsafeReadme
+ }
+ return "", nil
+}
+
+func readmeToHTML(rawMarkdown string) string {
+ s := string(blackfriday.Run([]byte(rawMarkdown)))
+ // Fix issue where single tags get extra space on conversion (e.g. "
")
+ s = strings.ReplaceAll(s, " />", "/>")
+ return s
+}
+
+var bluemondayPolicy = func() *bluemonday.Policy {
+ p := bluemonday.UGCPolicy()
+ // Allow fenced code block classes
+ p = p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code")
+ // Allow links without ref="nofollow" which are not set automatically on links on markdown conversion
+ p = p.RequireNoFollowOnLinks(false)
+ // Allow custom height and width on images
+ p = p.AllowAttrs("width", "height").OnElements("img")
+ // Allow HTML comments
+ p.AllowComments()
+ return p
+}()
+
+func sanitizeHTML(unsafeHTML string) string {
+ return bluemondayPolicy.Sanitize(unsafeHTML)
+}
+
+func unescapeHTML(safeHTML string) string {
+ return html.UnescapeString(safeHTML)
+}
diff --git a/validation/readme_test.go b/validation/readme_test.go
new file mode 100644
index 00000000..2d860247
--- /dev/null
+++ b/validation/readme_test.go
@@ -0,0 +1,75 @@
+/*
+Copyright 2024 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "testing"
+)
+
+const (
+ safeReadme = `
+
+# safe
+
+
+
+[click here](./other.md)
+
+
+---
+
+Here is some dangerous code inside a code block:
+
+
+` + "```go" + `
+Hello World
+` + "```"
+
+ unsafeReadme1 = `
+
+# unsafe
+
+
+
+[click here](./other.md)
+
+
+---
+
+Here is some dangerous code outside a code block:
+
+Hello World
+`
+
+ unsafeReadme2 = `
+# unsafe
+
+TAKE THAT!!!!!!!
+
+
+`
+)
+
+func TestValidateReadme(t *testing.T) {
+ tests := map[string]struct {
+ Input string
+ Expect bool
+ }{
+ "empty": {"", true},
+ "safe": {safeReadme, true},
+ "unsafe 1": {unsafeReadme1, false},
+ "unsafe 2": {unsafeReadme2, false},
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ diff, got := ValidateReadme(tt.Input)
+ if (got == nil) != tt.Expect {
+ t.Errorf("Expected ValidateReadme(`%s`) to return (err == nil) == %v, but got %v. diff: %s", tt.Input, tt.Expect, got, diff)
+ }
+ })
+ }
+}
diff --git a/validation/tag.go b/validation/tag.go
new file mode 100644
index 00000000..79c29594
--- /dev/null
+++ b/validation/tag.go
@@ -0,0 +1,29 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "fmt"
+ "regexp"
+)
+
+// From https://github.com/opencontainers/distribution-spec/blob/main/spec.md#pulling-manifests
+const tagPattern = `^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127}$`
+
+var (
+ tagPatternCompiled = regexp.MustCompile(tagPattern)
+
+ // ErrInvalidTag describes invalid tags by sharing the regular expression
+ // they must match
+ ErrInvalidTag = fmt.Errorf("tag must match %q", tagPattern)
+)
+
+func ValidateTag(tag string) error {
+ if tagPatternCompiled.MatchString(tag) {
+ return nil
+ }
+ return ErrInvalidTag
+}
diff --git a/validation/tag_test.go b/validation/tag_test.go
new file mode 100644
index 00000000..00b8d243
--- /dev/null
+++ b/validation/tag_test.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2023 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package validation
+
+import (
+ "testing"
+)
+
+func TestValidateTag(t *testing.T) {
+ tests := map[string]struct {
+ Input string
+ Expect bool
+ }{
+ "valid": {"latest", true},
+ "version": {"1.2.3-r1", true},
+ "uppercase is ok": {"DERP", true},
+ "128 chars is ok": {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", true},
+ "129 chars is not ok": {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", false},
+ "empty": {"", false},
+ "no slashes": {"foo/bar", false},
+ "no colons": {"foo:bar", false},
+ "no spaces in middle": {"chainguard engineering", false},
+ "no leading spaces": {" chainguardengineering", false},
+ "no spaces both sides": {" chainguardengineering ", false},
+ "no trailing spacess": {"chainguardengineering ", false},
+ "other whitespace is bad": {"\r\n\tderp", false},
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ got := ValidateTag(tt.Input)
+ if (got == nil) != tt.Expect {
+ t.Errorf("Expected ValidateTag(`%s`) to return (err == nil) == %v, but got %v", tt.Input, tt.Expect, got)
+ }
+ })
+ }
+}
From 8fddf121647d9efb14ef6de478c6948e66fa2f20 Mon Sep 17 00:00:00 2001
From: Billy Lynch <1844673+wlynch@users.noreply.github.com>
Date: Thu, 29 Feb 2024 15:56:32 -0500
Subject: [PATCH 03/41] Export fa595ecbc97449df8f6f65b7638db9a08bc32b5f
Export: fa595ecbc97449df8f6f65b7638db9a08bc32b5f
---
.github/chainguard/mono-readonly.sts.yaml | 10 +++
.github/chainguard/mono.sts.yaml | 11 ++++
.github/workflows/test.yaml | 41 ++++++++++++
.github/workflows/verify.yaml | 79 +++++++++++++++++++++++
4 files changed, 141 insertions(+)
create mode 100644 .github/chainguard/mono-readonly.sts.yaml
create mode 100644 .github/chainguard/mono.sts.yaml
create mode 100644 .github/workflows/test.yaml
create mode 100644 .github/workflows/verify.yaml
diff --git a/.github/chainguard/mono-readonly.sts.yaml b/.github/chainguard/mono-readonly.sts.yaml
new file mode 100644
index 00000000..e3702ffb
--- /dev/null
+++ b/.github/chainguard/mono-readonly.sts.yaml
@@ -0,0 +1,10 @@
+# Copyright 2024 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+issuer: https://token.actions.githubusercontent.com
+subject_pattern: repo:chainguard-dev/mono:pull_request
+claim_pattern:
+ job_workflow_ref: chainguard-dev/mono/.github/workflows/export-sdk.yaml@.*
+
+permissions:
+ contents: read
diff --git a/.github/chainguard/mono.sts.yaml b/.github/chainguard/mono.sts.yaml
new file mode 100644
index 00000000..7e2cfc2a
--- /dev/null
+++ b/.github/chainguard/mono.sts.yaml
@@ -0,0 +1,11 @@
+# Copyright 2024 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+issuer: https://token.actions.githubusercontent.com
+subject_pattern: repo:chainguard-dev/mono:ref:refs/heads/main
+claim_pattern:
+ job_workflow_ref: chainguard-dev/mono/.github/workflows/export-sdk.yaml@refs/heads/main
+
+permissions:
+ contents: write
+ pull_requests: write
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
new file mode 100644
index 00000000..115918e2
--- /dev/null
+++ b/.github/workflows/test.yaml
@@ -0,0 +1,41 @@
+# Copyright 2023 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+name: Test
+
+on:
+ pull_request:
+ branches: [ 'main', 'release-*' ]
+ push:
+ branches: [ 'main', 'release-*' ]
+
+jobs:
+
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out code onto GOPATH
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds
+ - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+ with:
+ # In order:
+ # * Module download cache
+ # * Build cache (Linux)
+ path: |
+ ~/go/pkg/mod
+ ~/.cache/go-build
+ key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-go-
+
+ - name: Set up Go
+ uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
+ with:
+ go-version-file: './go.mod'
+ check-latest: true
+
+ - run: |
+ # Exclude running unit tests against third_party repos.
+ go test -race $(go list ./... | grep -v third_party/)
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
new file mode 100644
index 00000000..267b0870
--- /dev/null
+++ b/.github/workflows/verify.yaml
@@ -0,0 +1,79 @@
+# Copyright 2023 Chainguard, Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+name: Verify
+
+on:
+ pull_request:
+ branches: [ 'main', 'release-*' ]
+ push:
+ branches: [ 'main', 'release-*' ]
+
+jobs:
+
+ verify:
+ name: Verify Codegen
+ runs-on: ubuntu-latest
+
+ env:
+ GOPATH: ${{ github.workspace }}
+
+ steps:
+ - name: Check out code
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ with:
+ path: ./src/github.com/${{ github.repository }}
+ fetch-depth: 0
+
+ - name: Set up Go
+ uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
+ with:
+ go-version-file: './src/github.com/${{ github.repository }}/go.mod'
+ check-latest: true
+
+ # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds
+ - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+ with:
+ # In order:
+ # * Module download cache
+ # * Build cache (Linux)
+ path: |
+ ~/go/pkg/mod
+ ~/.cache/go-build
+ key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-go-
+
+ #- name: Install protoc
+ # uses: arduino/setup-protoc@v1.1.2
+ # arduino/setup-protoc@v1.1.2 can't install latest releases of protoc due
+ # to protoc changing their version naming scheme:
+ # https://github.com/arduino/setup-protoc/issues/33
+ - name: Install Protoc
+ run: |
+ cd "$(mktemp -d)"
+ wget -O protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip
+ unzip protoc.zip -d .
+ chmod +x ./bin/protoc
+ echo "$(pwd)/bin" >> "$GITHUB_PATH"
+
+ - name: Install Dependencies
+ run: |
+ cd $(mktemp -d)
+ go install github.com/google/go-licenses@ceb292363ec84358c9a276ef23aa0de893e59b84
+ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
+ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
+ go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
+ go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
+
+ - name: Update Codegen
+ shell: bash
+ working-directory: ./src/github.com/${{ github.repository }}
+ run: |
+ ./hack/update-codegen.sh
+
+ - name: Verify
+ uses: chainguard-dev/actions/nodiff@main
+ with:
+ path: ./src/github.com/${{ github.repository }}
+ fixup-command: "./hack/update-codegen.sh"
From adf12f2609a6d8cd0d5307bcce53831196b8a923 Mon Sep 17 00:00:00 2001
From: Colin Douglas <16968564+cmdpdx@users.noreply.github.com>
Date: Fri, 1 Mar 2024 17:27:36 -0800
Subject: [PATCH 04/41] Export d8946d6df5292634222c9592e1e65b328232cb12
Export: d8946d6df5292634222c9592e1e65b328232cb12
---
auth/login/login.go | 11 +++++++++-
auth/login/login_test.go | 46 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 1 deletion(-)
create mode 100644 auth/login/login_test.go
diff --git a/auth/login/login.go b/auth/login/login.go
index 256f64dd..67411409 100644
--- a/auth/login/login.go
+++ b/auth/login/login.go
@@ -17,6 +17,15 @@ import (
"github.com/pkg/browser"
)
+// OpenBrowserError wraps the error returned from browser.OpenURL,
+// since this can take a few different forms depending on the OS.
+type OpenBrowserError struct {
+ err error
+}
+
+func (e *OpenBrowserError) Error() string { return "failed to open browser: " + e.err.Error() }
+func (e *OpenBrowserError) Unwrap() error { return e.err }
+
func Login(ctx context.Context, opts ...Option) (token string, refreshToken string, err error) {
conf, err := newConfigFromOptions(opts...)
if err != nil {
@@ -68,7 +77,7 @@ func Login(ctx context.Context, opts ...Option) (token string, refreshToken stri
fmt.Fprintf(os.Stderr, "Opening browser to %s\n", u)
err = browser.OpenURL(u)
if err != nil {
- return "", "", err
+ return "", "", &OpenBrowserError{err}
}
token, err = s.Token()
diff --git a/auth/login/login_test.go b/auth/login/login_test.go
new file mode 100644
index 00000000..2a4b92f3
--- /dev/null
+++ b/auth/login/login_test.go
@@ -0,0 +1,46 @@
+/*
+Copyright 2024 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package login
+
+import (
+ "errors"
+ "testing"
+)
+
+func TestOpenBrowserErrorAs(t *testing.T) {
+ tests := map[string]struct {
+ err error
+ want bool
+ }{
+ "nil": {
+ err: nil,
+ want: false,
+ },
+ "success": {
+ err: &OpenBrowserError{
+ errors.New("unit test"),
+ },
+ want: true,
+ },
+ "failure": {
+ err: errors.New("unit test"),
+ want: false,
+ },
+ }
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ var want *OpenBrowserError
+ got := errors.As(test.err, &want)
+ if got != test.want {
+ t.Errorf("As() expected %t, got %t", test.want, got)
+ }
+ if got {
+ t.Log(want.Error())
+ }
+ })
+ }
+}
From b29644c669af265f285fd327c642f55c4195ee6c Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Wed, 6 Mar 2024 14:08:24 -0800
Subject: [PATCH 05/41] Export 366f1da5c34d5032aaec07338e8ad4dd56e0ef7a
Export: 366f1da5c34d5032aaec07338e8ad4dd56e0ef7a
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index dbe084d2..0cd031ca 100644
--- a/go.mod
+++ b/go.mod
@@ -10,7 +10,7 @@ require (
github.com/aws/aws-sdk-go-v2 v1.24.1
github.com/bits-and-blooms/bitset v1.13.0
github.com/chainguard-dev/clog v1.3.1
- github.com/cloudevents/sdk-go/v2 v2.15.0
+ github.com/cloudevents/sdk-go/v2 v2.15.2
github.com/coreos/go-oidc/v3 v3.9.0
github.com/google/go-cmp v0.6.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1
diff --git a/go.sum b/go.sum
index 4ca5f6bb..8fb546f0 100644
--- a/go.sum
+++ b/go.sum
@@ -74,8 +74,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
github.com/chainguard-dev/clog v1.3.1 h1:CDNCty5WKQhJzoOPubk0GdXt+bPQyargmfClqebrpaQ=
github.com/chainguard-dev/clog v1.3.1/go.mod h1:cV516KZWqYc/phZsCNwF36u/KMGS+Gj5Uqeb8Hlp95Y=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudevents/sdk-go/v2 v2.15.0 h1:aKnhLQhyoJXqEECQdOIZnbZ9VupqlidE6hedugDGr+I=
-github.com/cloudevents/sdk-go/v2 v2.15.0/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
+github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
+github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101 h1:7To3pQ+pZo0i3dsWEbinPNFs5gPSBOsJtx3wTT94VBY=
github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
From 3fdd2407fd470bd9911a2fdd08a268fe1b8777b9 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 7 Mar 2024 17:02:13 -0800
Subject: [PATCH 06/41] Export 46919699f0ed78d12ace5f21a1da159ea554deb0
Export: 46919699f0ed78d12ace5f21a1da159ea554deb0
---
go.mod | 4 ++--
go.sum | 21 +++++++++++++++------
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/go.mod b/go.mod
index 0cd031ca..153f4e33 100644
--- a/go.mod
+++ b/go.mod
@@ -67,7 +67,7 @@ require (
github.com/evanphx/json-patch/v5 v5.7.0 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/go-jose/go-jose/v3 v3.0.1 // indirect
+ github.com/go-jose/go-jose/v3 v3.0.3 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
@@ -142,7 +142,7 @@ require (
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect
- gopkg.in/go-jose/go-jose.v2 v2.6.2 // indirect
+ gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 8fb546f0..ba1109cc 100644
--- a/go.sum
+++ b/go.sum
@@ -106,8 +106,8 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA=
-github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8=
+github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
+github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -314,7 +314,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
@@ -358,7 +357,6 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -374,6 +372,7 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -388,6 +387,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -399,6 +400,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -416,16 +418,22 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
@@ -441,6 +449,7 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -493,8 +502,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/go-jose/go-jose.v2 v2.6.2 h1:Rl5+9rA0kG3vsO1qhncMPRT5eHICihAMQYJkD7u/i4M=
-gopkg.in/go-jose/go-jose.v2 v2.6.2/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
+gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
+gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
From 672702a7a4cf1412ae94ca9af795e991eee4e5de Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Fri, 8 Mar 2024 07:23:06 -0800
Subject: [PATCH 07/41] Export b16af0c354e9f028fc0329e091fdfe5dfb304b3e
Export: b16af0c354e9f028fc0329e091fdfe5dfb304b3e
---
.github/workflows/verify.yaml | 2 +-
README.md | 2 +-
go.mod | 4 +-
go.sum | 8 +-
proto/annotations/auth.pb.go | 2 +-
proto/annotations/events.pb.go | 2 +-
proto/capabilities/capabilities.pb.go | 368 +++++++++---------
.../advisory/v1/advisory.platform.pb.go | 2 +-
proto/platform/auth/v1/auth.platform.pb.go | 6 +-
proto/platform/common/v1/uidp.platform.pb.go | 2 +-
.../events/v1/identities.platform.pb.go | 12 +-
.../events/v1/subscriptions.platform.pb.go | 12 +-
.../v1/account_associations.platform.pb.go | 22 +-
proto/platform/iam/v1/group.platform.pb.go | 12 +-
.../iam/v1/group_invites.platform.pb.go | 8 +-
proto/platform/iam/v1/identity.platform.pb.go | 12 +-
.../iam/v1/identity_providers.platform.pb.go | 20 +-
proto/platform/iam/v1/policies.platform.pb.go | 16 +-
proto/platform/iam/v1/role.platform.pb.go | 16 +-
.../iam/v1/role_binding.platform.pb.go | 20 +-
proto/platform/iam/v1/sigstore.platform.pb.go | 12 +-
proto/platform/oidc/v1/oidc.platform.pb.go | 6 +-
proto/platform/ping/v1/ping.platform.pb.go | 2 +-
.../registry/v1/registry.platform.pb.go | 28 +-
.../tenant/v1/attestation.platform.pb.go | 2 +-
.../platform/tenant/v1/cluster.platform.pb.go | 20 +-
.../platform/tenant/v1/context.platform.pb.go | 2 +-
.../tenant/v1/namespace.platform.pb.go | 2 +-
proto/platform/tenant/v1/node.platform.pb.go | 2 +-
.../tenant/v1/policy_results.platform.pb.go | 2 +-
.../platform/tenant/v1/record.platform.pb.go | 2 +-
proto/platform/tenant/v1/risk.platform.pb.go | 2 +-
proto/platform/tenant/v1/sbom.platform.pb.go | 2 +-
.../tenant/v1/signature.platform.pb.go | 2 +-
proto/platform/tenant/v1/vuln.platform.pb.go | 2 +-
.../tenant/v1/workload.platform.pb.go | 2 +-
36 files changed, 319 insertions(+), 319 deletions(-)
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
index 267b0870..7b8366ca 100644
--- a/.github/workflows/verify.yaml
+++ b/.github/workflows/verify.yaml
@@ -61,7 +61,7 @@ jobs:
run: |
cd $(mktemp -d)
go install github.com/google/go-licenses@ceb292363ec84358c9a276ef23aa0de893e59b84
- go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
+ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
diff --git a/README.md b/README.md
index 251625f5..6664b400 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ We currently require `protoc` v21.12.
Install `protoc` codegen dependencies:
```shell
-go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
+go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
diff --git a/go.mod b/go.mod
index 153f4e33..0a8faf14 100644
--- a/go.mod
+++ b/go.mod
@@ -24,7 +24,7 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe
google.golang.org/grpc v1.61.1
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
- google.golang.org/protobuf v1.32.0
+ google.golang.org/protobuf v1.33.0
gopkg.in/square/go-jose.v2 v2.6.0
k8s.io/api v0.29.1
k8s.io/apimachinery v0.29.1
@@ -73,7 +73,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/google/go-containerregistry v0.18.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
diff --git a/go.sum b/go.sum
index ba1109cc..0b3c500e 100644
--- a/go.sum
+++ b/go.sum
@@ -145,8 +145,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -496,8 +496,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
-google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
+google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
diff --git a/proto/annotations/auth.pb.go b/proto/annotations/auth.pb.go
index a7aeace6..32414401 100644
--- a/proto/annotations/auth.pb.go
+++ b/proto/annotations/auth.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: auth.proto
diff --git a/proto/annotations/events.pb.go b/proto/annotations/events.pb.go
index f04beef8..9c6a02d6 100644
--- a/proto/annotations/events.pb.go
+++ b/proto/annotations/events.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: events.proto
diff --git a/proto/capabilities/capabilities.pb.go b/proto/capabilities/capabilities.pb.go
index 344a7418..607c9f62 100644
--- a/proto/capabilities/capabilities.pb.go
+++ b/proto/capabilities/capabilities.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: capabilities.proto
@@ -329,269 +329,269 @@ var file_capabilities_proto_rawDesc = []byte{
0x93, 0x21, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b,
0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x15, 0x43,
0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x43, 0x52,
- 0x45, 0x41, 0x54, 0x45, 0x10, 0x65, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x01,
+ 0x45, 0x41, 0x54, 0x45, 0x10, 0x65, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x01, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55,
- 0x50, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x66, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0xa8, 0xcb, 0x91, 0x4d, 0x02, 0x12, 0x2f, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
+ 0x50, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x66, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x02, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x67, 0x1a, 0x16,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x6c, 0x69, 0x73,
- 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x03, 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x03, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41,
0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0x68, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x04, 0x12, 0x42, 0x0a, 0x1c, 0x43,
+ 0x68, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x04, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x43,
0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x56,
0x49, 0x54, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc9, 0x01, 0x1a, 0x1f,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x05, 0x12,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x05, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcb, 0x01,
- 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x06, 0x12,
+ 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d, 0x06, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50,
0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0xcc, 0x01, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
- 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x07, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
+ 0xcc, 0x01, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x07, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xad, 0x02, 0x1a, 0x17,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x08, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x08, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73,
+ 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x43, 0x41, 0x50, 0x5f, 0x49,
0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10,
- 0xae, 0x02, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x09, 0x12, 0x2e, 0x0a, 0x12, 0x43,
+ 0xae, 0x02, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d, 0x09, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72,
+ 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x43,
0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0xaf, 0x02, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x72, 0x6f, 0x6c, 0x65,
- 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x0a, 0x12, 0x32, 0x0a, 0x14, 0x43,
+ 0x54, 0x10, 0xaf, 0x02, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x0a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x43,
0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4c,
- 0x45, 0x54, 0x45, 0x10, 0xb0, 0x02, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x6f,
- 0x6c, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0b, 0x12,
+ 0x45, 0x54, 0x45, 0x10, 0xb0, 0x02, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d, 0x0b, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f,
0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10,
- 0x91, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x0c, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
+ 0x91, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x0c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72,
+ 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x52,
0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0x92, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f,
- 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0d, 0x12, 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x41, 0x54, 0x45, 0x10, 0x92, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x0d, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x49,
0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x93, 0x03, 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12,
- 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6c, 0x69,
- 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x0e, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x93, 0x03, 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d, 0x0e, 0x9a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x49,
0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x53,
- 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x94, 0x03, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x0f, 0x12, 0x3b, 0x0a, 0x1a, 0x43,
+ 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x94, 0x03, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x0f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
- 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xf5, 0x03, 0x1a, 0x1a, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x10, 0x12, 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f,
+ 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xf5, 0x03, 0x1a, 0x1a, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x10, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f,
0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f,
- 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xf6, 0x03, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0xa8, 0xcb, 0x91, 0x4d, 0x11, 0x12, 0x37, 0x0a, 0x18, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
+ 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xf6, 0x03, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x11,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0xf7, 0x03, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x12, 0x12, 0x3b,
+ 0x54, 0x10, 0xf7, 0x03, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x12, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3b,
0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55,
0x53, 0x54, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xf8, 0x03, 0x1a,
- 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x13, 0x12, 0x3f, 0x0a, 0x1c, 0x43,
+ 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x13, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45,
0x52, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0xf9, 0x03, 0x1a, 0x1c,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x64,
- 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0xa8, 0xcb, 0x91, 0x4d, 0x33, 0x12, 0x35, 0x0a, 0x17,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x33, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x17,
0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52,
- 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x04, 0x1a, 0x17, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb,
- 0x91, 0x4d, 0x14, 0x12, 0x45, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e,
+ 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x04, 0x1a, 0x17, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x14, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6c,
+ 0x69, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e,
0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54,
- 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe5, 0x04, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x14, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73,
- 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x30, 0x12, 0x49, 0x0a, 0x21, 0x43, 0x41,
+ 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe5, 0x04, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x30,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x21, 0x43, 0x41,
0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f,
0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
- 0xef, 0x04, 0x1a, 0x21, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74,
- 0xa8, 0xcb, 0x91, 0x4d, 0x31, 0x12, 0x51, 0x0a, 0x25, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
+ 0xef, 0x04, 0x1a, 0x21, 0xa8, 0xcb, 0x91, 0x4d, 0x31, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x72,
+ 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x25, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e,
0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43,
0x59, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf9,
- 0x04, 0x1a, 0x25, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1a, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x6c,
- 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x32, 0x12, 0x31, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f,
+ 0x04, 0x1a, 0x25, 0xa8, 0xcb, 0x91, 0x4d, 0x32, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1a, 0x72, 0x65,
+ 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f,
0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x53, 0x5f, 0x4c, 0x49, 0x53,
- 0x54, 0x10, 0x80, 0x05, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x72, 0x69, 0x73, 0x6b,
- 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x44, 0x12, 0x31, 0x0a, 0x15, 0x43,
+ 0x54, 0x10, 0x80, 0x05, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x44, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x53, 0x42, 0x4f, 0x4d, 0x53, 0x5f,
- 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8a, 0x05, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x73,
- 0x62, 0x6f, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x45, 0x12, 0x3f,
+ 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8a, 0x05, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x45, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0a, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x3f,
0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x56, 0x55, 0x4c,
0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x94,
- 0x05, 0x1a, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x76, 0x75, 0x6c, 0x6e, 0x5f, 0x72, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x46, 0x12,
+ 0x05, 0x1a, 0x1c, 0xa8, 0xcb, 0x91, 0x4d, 0x46, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x76, 0x75,
+ 0x6c, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
0x3f, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x54,
0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10,
- 0x9e, 0x05, 0x1a, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x47,
+ 0x9e, 0x05, 0x1a, 0x1c, 0xa8, 0xcb, 0x91, 0x4d, 0x47, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x11, 0x61,
+ 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74,
0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43, 0x43, 0x4f,
0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53,
- 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xbd, 0x05, 0x1a, 0x26, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91,
- 0x4d, 0x15, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
+ 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xbd, 0x05, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61,
+ 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xbe, 0x05, 0x1a, 0x26, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
- 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8,
- 0xcb, 0x91, 0x4d, 0x16, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
+ 0x4e, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xbe, 0x05, 0x1a, 0x26, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbf, 0x05, 0x1a, 0x24, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
- 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
- 0x4d, 0x17, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
+ 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbf, 0x05, 0x1a, 0x24, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x17, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69,
+ 0x73, 0x74, 0x12, 0x50, 0x0a, 0x23, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x41, 0x43,
0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
- 0x4e, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc0, 0x05, 0x1a, 0x26, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f,
- 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8,
- 0xcb, 0x91, 0x4d, 0x18, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
+ 0x4e, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc0, 0x05, 0x1a, 0x26, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f,
0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa1, 0x06,
- 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x63,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x19, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41,
+ 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x19, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41,
0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0xa2, 0x06, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1a,
+ 0x41, 0x54, 0x45, 0x10, 0xa2, 0x06, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x1a, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x12, 0x30, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49,
- 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa3, 0x06, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
- 0x4d, 0x1b, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f,
+ 0x43, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa3, 0x06, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x1b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6c, 0x69,
+ 0x73, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f,
0x4c, 0x49, 0x43, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa4, 0x06, 0x1a, 0x18,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1c, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x1c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f,
0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x52, 0x45,
- 0x41, 0x54, 0x45, 0x10, 0x85, 0x07, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64,
- 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91,
- 0x4d, 0x1d, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
+ 0x41, 0x54, 0x45, 0x10, 0x85, 0x07, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x1d, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x86, 0x07,
- 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x1e, 0x12, 0x34, 0x0a, 0x15,
+ 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x1e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x15,
0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x87, 0x07, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d,
- 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91,
- 0x4d, 0x1f, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x87, 0x07, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x1f, 0x9a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x6c, 0x69,
+ 0x73, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44,
0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x88, 0x07,
- 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x20, 0x12, 0x31, 0x0a, 0x15,
+ 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x20, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x15,
0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x53,
- 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x07, 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a,
- 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x21, 0x12,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x07, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x21, 0x9a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12,
0x3b, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x41,
0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x08,
- 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x22, 0x12, 0x39, 0x0a, 0x19,
+ 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x22, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x19,
0x43, 0x41, 0x50, 0x5f, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x54, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x4c,
- 0x4f, 0x41, 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb3, 0x09, 0x1a, 0x19, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x6c, 0x69,
- 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x23, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49,
+ 0x4f, 0x41, 0x44, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb3, 0x09, 0x1a, 0x19, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x23, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61,
+ 0x64, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49,
0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56,
0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x95, 0x0a, 0x1a,
- 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
- 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0xa8, 0xcb, 0x91, 0x4d, 0x34, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
+ 0x24, 0xa8, 0xcb, 0x91, 0x4d, 0x34, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d,
0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44,
- 0x45, 0x52, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x96, 0x0a, 0x1a, 0x24, 0x9a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72,
- 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x35, 0x12, 0x48, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49,
+ 0x45, 0x52, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x96, 0x0a, 0x1a, 0x24, 0xa8,
+ 0xcb, 0x91, 0x4d, 0x35, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49,
0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52,
- 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x97, 0x0a, 0x1a, 0x22, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
- 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x36, 0x12, 0x4c, 0x0a,
+ 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x97, 0x0a, 0x1a, 0x22, 0xa8, 0xcb, 0x91, 0x4d, 0x36,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x17, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70,
+ 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a,
0x21, 0x43, 0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54,
0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45,
- 0x54, 0x45, 0x10, 0x98, 0x0a, 0x1a, 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x19, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x37, 0x12, 0x44, 0x0a, 0x1e, 0x43,
+ 0x54, 0x45, 0x10, 0x98, 0x0a, 0x1a, 0x24, 0xa8, 0xcb, 0x91, 0x4d, 0x37, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x19, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x1e, 0x43,
0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52,
0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x0b,
- 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d,
- 0x24, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f,
+ 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x24, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f,
0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44,
- 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x1a, 0x1f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75,
- 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x25, 0x12, 0x40, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x45,
+ 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x1a, 0x1f, 0xa8, 0xcb, 0x91, 0x4d, 0x25, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x43, 0x41, 0x50, 0x5f, 0x45,
0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49,
- 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdf, 0x0b, 0x1a, 0x1d, 0x9a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x26, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50,
+ 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdf, 0x0b, 0x1a, 0x1d, 0xa8, 0xcb, 0x91, 0x4d,
+ 0x26, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x1e, 0x43, 0x41, 0x50,
0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xe0, 0x0b, 0x1a, 0x1f,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x27, 0x12,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x27, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f,
- 0x50, 0x55, 0x4c, 0x4c, 0x10, 0xc1, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x6c, 0x6c, 0xa8, 0xcb, 0x91, 0x4d,
- 0x28, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52,
- 0x59, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0xc2, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x73, 0x68, 0xa8, 0xcb,
- 0x91, 0x4d, 0x29, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f,
- 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc3, 0x0c, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d,
- 0x38, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xc4, 0x0c, 0x1a, 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72,
- 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x39, 0x12,
+ 0x50, 0x55, 0x4c, 0x4c, 0x10, 0xc1, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x28, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x75, 0x6c,
+ 0x6c, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52,
+ 0x59, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0xc2, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x29,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70,
+ 0x75, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f,
+ 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc3, 0x0c, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x38,
+ 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x55, 0x50,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xc4, 0x0c, 0x1a, 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x39, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
0x28, 0x0a, 0x0d, 0x43, 0x41, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x4c, 0x49, 0x53, 0x54,
- 0x10, 0xc5, 0x0c, 0x1a, 0x14, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x3a, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50,
+ 0x10, 0xc5, 0x0c, 0x1a, 0x14, 0xa8, 0xcb, 0x91, 0x4d, 0x3a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x09,
+ 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x43, 0x41, 0x50,
0x5f, 0x52, 0x45, 0x50, 0x4f, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xc6, 0x0c, 0x1a,
- 0x16, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3b, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d,
+ 0x16, 0xa8, 0xcb, 0x91, 0x4d, 0x3b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0b, 0x72, 0x65, 0x70, 0x6f,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d,
0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xc7,
- 0x0c, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3c, 0x12, 0x34, 0x0a,
+ 0x0c, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a,
0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xc8, 0x0c, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d,
- 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x3d, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46,
- 0x45, 0x53, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc9, 0x0c, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x6c, 0x69, 0x73, 0x74,
- 0xa8, 0xcb, 0x91, 0x4d, 0x3e, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xc8, 0x0c, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3d, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46,
+ 0x45, 0x53, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc9, 0x0c, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x3e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x4e,
0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xca, 0x0c, 0x1a,
- 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x3f, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
+ 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x3f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x6d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xcb, 0x0c,
- 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x40, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x54,
- 0x41, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xcc, 0x0c, 0x1a, 0x15, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x41, 0x12, 0x26, 0x0a, 0x0c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4c,
- 0x49, 0x53, 0x54, 0x10, 0xcd, 0x0c, 0x1a, 0x13, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x74, 0x61,
- 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0xa8, 0xcb, 0x91, 0x4d, 0x42, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
+ 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x40, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67,
+ 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x54,
+ 0x41, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xcc, 0x0c, 0x1a, 0x15, 0xa8, 0xcb,
+ 0x91, 0x4d, 0x41, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4c,
+ 0x49, 0x53, 0x54, 0x10, 0xcd, 0x0c, 0x1a, 0x13, 0xa8, 0xcb, 0x91, 0x4d, 0x42, 0x9a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x08, 0x74, 0x61, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xce, 0x0c,
- 0x1a, 0x15, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x43, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53,
+ 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x43, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53,
0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa5,
- 0x0d, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x12, 0x34, 0x0a,
+ 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69,
+ 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a,
0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xa8, 0xcb,
- 0x91, 0x4d, 0x2b, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54,
- 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a, 0x18, 0x9a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x6c, 0x69, 0x73, 0x74,
- 0xa8, 0xcb, 0x91, 0x4d, 0x2c, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47,
+ 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2b, 0x9a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54,
+ 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x2c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47,
0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa8, 0x0d, 0x1a,
- 0x1a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x12, 0x4c, 0x0a, 0x1f, 0x43,
+ 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73,
+ 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x1f, 0x43,
0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54,
0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa9,
- 0x0d, 0x1a, 0x26, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50,
+ 0x0d, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x73, 0x69,
+ 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+ 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50,
0x5f, 0x47, 0x55, 0x4c, 0x46, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x90, 0x4e, 0x1a, 0x15,
- 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67, 0x75, 0x6c, 0x66, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e,
+ 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67, 0x75, 0x6c, 0x66, 0x73,
+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x18, 0xf3, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a,
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.go b/proto/platform/advisory/v1/advisory.platform.pb.go
index bbf57c45..86fa949e 100644
--- a/proto/platform/advisory/v1/advisory.platform.pb.go
+++ b/proto/platform/advisory/v1/advisory.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: advisory.platform.proto
diff --git a/proto/platform/auth/v1/auth.platform.pb.go b/proto/platform/auth/v1/auth.platform.pb.go
index 45718d3f..a049a7d1 100644
--- a/proto/platform/auth/v1/auth.platform.pb.go
+++ b/proto/platform/auth/v1/auth.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: auth.platform.proto
@@ -429,8 +429,8 @@ var file_auth_platform_proto_rawDesc = []byte{
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22,
- 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76,
- 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74,
+ 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8,
0xd2, 0x05, 0x02, 0x0a, 0x00, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x30, 0x0a, 0x25, 0x64, 0x65, 0x76,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x61, 0x75, 0x74, 0x68, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e,
diff --git a/proto/platform/common/v1/uidp.platform.pb.go b/proto/platform/common/v1/uidp.platform.pb.go
index 626ce861..b96a0549 100644
--- a/proto/platform/common/v1/uidp.platform.pb.go
+++ b/proto/platform/common/v1/uidp.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: uidp.platform.proto
diff --git a/proto/platform/events/v1/identities.platform.pb.go b/proto/platform/events/v1/identities.platform.pb.go
index 3a5a7e04..eb94e7d9 100644
--- a/proto/platform/events/v1/identities.platform.pb.go
+++ b/proto/platform/events/v1/identities.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: identities.platform.proto
@@ -292,8 +292,8 @@ var file_identities_platform_proto_rawDesc = []byte{
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
- 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8,
0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x85, 0x07, 0x10, 0x01, 0x12, 0xd9, 0x01, 0x0a, 0x0e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
@@ -302,9 +302,9 @@ var file_identities_platform_proto_rawDesc = []byte{
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x20, 0x32, 0x1b, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a,
- 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
+ 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x04, 0x12, 0x02, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
0x0b, 0x35, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x75, 0x70, 0x64,
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.go b/proto/platform/events/v1/subscriptions.platform.pb.go
index 98103c93..dd1799e6 100644
--- a/proto/platform/events/v1/subscriptions.platform.pb.go
+++ b/proto/platform/events/v1/subscriptions.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: subscriptions.platform.proto
@@ -341,11 +341,11 @@ var file_subscriptions_platform_proto_rawDesc = []byte{
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x22, 0x27,
- 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xdd,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x0c,
+ 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x2f, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xdd,
0x0b, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3c, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x73, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.go b/proto/platform/iam/v1/account_associations.platform.pb.go
index 3be34195..1af0b54d 100644
--- a/proto/platform/iam/v1/account_associations.platform.pb.go
+++ b/proto/platform/iam/v1/account_associations.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: account_associations.platform.proto
@@ -845,9 +845,9 @@ var file_account_associations_platform_proto_rawDesc = []byte{
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41,
0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a,
+ 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d,
0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbd, 0x05, 0xc2, 0xf0, 0x8e, 0xfc,
0x0b, 0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
@@ -860,9 +860,9 @@ var file_account_associations_platform_proto_rawDesc = []byte{
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x2c, 0x1a, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a,
+ 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x1a, 0x27, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xbe, 0x05, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
0x41, 0x0a, 0x36, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
@@ -900,10 +900,10 @@ var file_account_associations_platform_proto_rawDesc = []byte{
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73,
0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x22, 0x2d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
- 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73,
+ 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
0x12, 0x04, 0x0a, 0x02, 0xbf, 0x05, 0x42, 0x75, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x23, 0x50, 0x6c,
diff --git a/proto/platform/iam/v1/group.platform.pb.go b/proto/platform/iam/v1/group.platform.pb.go
index f93c1668..47162929 100644
--- a/proto/platform/iam/v1/group.platform.pb.go
+++ b/proto/platform/iam/v1/group.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: group.platform.proto
@@ -393,9 +393,9 @@ var file_group_platform_proto_rawDesc = []byte{
0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
- 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
+ 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1a,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x07,
0x12, 0x05, 0x0a, 0x01, 0x65, 0x10, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27, 0x64,
0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x63, 0x72, 0x65, 0x61,
@@ -405,8 +405,8 @@ var file_group_platform_proto_rawDesc = []byte{
0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1b, 0x1a, 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8,
+ 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x1a, 0x16, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
0xd2, 0x05, 0x05, 0x12, 0x03, 0x0a, 0x01, 0x66, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x32, 0x0a, 0x27,
0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x75, 0x70, 0x64,
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
index 43ee8f1f..f7ce620d 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: group_invites.platform.proto
@@ -695,9 +695,9 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22,
- 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
- 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39,
0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69,
diff --git a/proto/platform/iam/v1/identity.platform.pb.go b/proto/platform/iam/v1/identity.platform.pb.go
index 94d24e99..1e88a650 100644
--- a/proto/platform/iam/v1/identity.platform.pb.go
+++ b/proto/platform/iam/v1/identity.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: identity.platform.proto
@@ -1082,9 +1082,9 @@ var file_identity_platform_proto_rawDesc = []byte{
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x2d, 0x22, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x93, 0x02, 0x2d, 0x3a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x21, 0x2f,
+ 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65,
+ 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x85, 0x07, 0xc2, 0xf0, 0x8e, 0xfc,
0x0b, 0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
@@ -1095,8 +1095,8 @@ var file_identity_platform_proto_rawDesc = []byte{
0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f,
- 0x1a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a,
+ 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65,
+ 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x86, 0x07, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
0x35, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.go b/proto/platform/iam/v1/identity_providers.platform.pb.go
index eba96e4e..886c5145 100644
--- a/proto/platform/iam/v1/identity_providers.platform.pb.go
+++ b/proto/platform/iam/v1/identity_providers.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: identity_providers.platform.proto
@@ -490,11 +490,11 @@ var file_identity_providers_platform_proto_rawDesc = []byte{
0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x96, 0x01,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x28, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
- 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
- 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x3a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x95, 0x0a, 0x91,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+ 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x28, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
+ 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x95, 0x0a, 0x91,
0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
@@ -505,10 +505,10 @@ var file_identity_providers_platform_proto_rawDesc = []byte{
0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x1a,
- 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x96,
+ 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a,
+ 0x01, 0x2a, 0x1a, 0x21, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0x96,
0x0a, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61,
0x6d, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69,
diff --git a/proto/platform/iam/v1/policies.platform.pb.go b/proto/platform/iam/v1/policies.platform.pb.go
index d93a6671..60a2ca7c 100644
--- a/proto/platform/iam/v1/policies.platform.pb.go
+++ b/proto/platform/iam/v1/policies.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: policies.platform.proto
@@ -750,10 +750,10 @@ var file_policies_platform_proto_rawDesc = []byte{
0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
- 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa1, 0x06, 0xc2, 0xf0, 0x8e,
+ 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
+ 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa1, 0x06, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x33, 0x0a, 0x28, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
@@ -781,9 +781,9 @@ var file_policies_platform_proto_rawDesc = []byte{
0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x1a,
- 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a,
+ 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa2, 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x33, 0x0a, 0x28,
0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70,
diff --git a/proto/platform/iam/v1/role.platform.pb.go b/proto/platform/iam/v1/role.platform.pb.go
index 46241bb2..28515544 100644
--- a/proto/platform/iam/v1/role.platform.pb.go
+++ b/proto/platform/iam/v1/role.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: role.platform.proto
@@ -375,17 +375,17 @@ var file_role_platform_proto_rawDesc = []byte{
0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1c, 0x2f,
- 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x04, 0x72, 0x6f, 0x6c,
- 0x65, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xad, 0x02, 0x12, 0x74, 0x0a,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x04, 0x72,
+ 0x6f, 0x6c, 0x65, 0x22, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c,
+ 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xad, 0x02, 0x12, 0x74, 0x0a,
0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f,
- 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64,
- 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a,
+ 0x1a, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f,
+ 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
0x02, 0xae, 0x02, 0x12, 0x73, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
index 22969923..2b0ba2a2 100644
--- a/proto/platform/iam/v1/role_binding.platform.pb.go
+++ b/proto/platform/iam/v1/role_binding.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: role_binding.platform.proto
@@ -36,7 +36,7 @@ type RoleBinding struct {
// group, UIDP of the group to bind. This field is ignored and will be removed
// in the future. The group is always the parent of the UIDP.
//
- // Deprecated: Do not use.
+ // Deprecated: Marked as deprecated in role_binding.platform.proto.
Group string `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"`
// role, UIDP of the Role to bind
Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
@@ -88,7 +88,7 @@ func (x *RoleBinding) GetIdentity() string {
return ""
}
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in role_binding.platform.proto.
func (x *RoleBinding) GetGroup() string {
if x != nil {
return x.Group
@@ -488,10 +488,10 @@ var file_role_binding_platform_proto_rawDesc = []byte{
0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c,
0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x30, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x3a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e,
+ 0x30, 0x3a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
+ 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65,
0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
@@ -501,9 +501,9 @@ var file_role_binding_platform_proto_rawDesc = []byte{
0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x1a, 0x1c, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x69, 0x6e, 0x67, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e,
0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69,
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.go b/proto/platform/iam/v1/sigstore.platform.pb.go
index fda336a4..29503223 100644
--- a/proto/platform/iam/v1/sigstore.platform.pb.go
+++ b/proto/platform/iam/v1/sigstore.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: sigstore.platform.proto
@@ -591,9 +591,9 @@ var file_sigstore_platform_proto_rawDesc = []byte{
0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x3d, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x2b, 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69,
- 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x8a,
+ 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1f,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa5, 0x0d, 0x12, 0x7e, 0x0a, 0x04, 0x4c,
0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69,
@@ -616,8 +616,8 @@ var file_sigstore_platform_proto_rawDesc = []byte{
0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1d, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67,
- 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, 0x2a,
+ 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
+ 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa6, 0x0d, 0x42, 0x6a, 0x0a, 0x22,
0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.go b/proto/platform/oidc/v1/oidc.platform.pb.go
index 1a2b1350..d26d3b45 100644
--- a/proto/platform/oidc/v1/oidc.platform.pb.go
+++ b/proto/platform/oidc/v1/oidc.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: oidc.platform.proto
@@ -328,8 +328,8 @@ var file_oidc_platform_proto_rawDesc = []byte{
0x64, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6f, 0x69, 0x64, 0x63, 0x2e, 0x52, 0x61,
- 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x0d,
- 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5a, 0x0f, 0x12,
+ 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x5a, 0x0f,
+ 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22,
0x0d, 0x2f, 0x73, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x97,
0x01, 0x0a, 0x14, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65,
0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
diff --git a/proto/platform/ping/v1/ping.platform.pb.go b/proto/platform/ping/v1/ping.platform.pb.go
index 601fda17..d55b2916 100644
--- a/proto/platform/ping/v1/ping.platform.pb.go
+++ b/proto/platform/ping/v1/ping.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: ping.platform.proto
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 5cf6d6c0..6a9dc4a3 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: registry.platform.proto
@@ -2571,10 +2571,10 @@ var file_registry_platform_proto_rawDesc = []byte{
0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
- 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x04, 0x72, 0x65,
- 0x70, 0x6f, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0,
+ 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22,
+ 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0,
0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
@@ -2585,9 +2585,9 @@ var file_registry_platform_proto_rawDesc = []byte{
0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1f, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
- 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e,
+ 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75,
@@ -2620,9 +2620,9 @@ var file_registry_platform_proto_rawDesc = []byte{
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x25, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f,
+ 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
@@ -2633,9 +2633,9 @@ var file_registry_platform_proto_rawDesc = []byte{
0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
- 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e,
+ 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70,
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.go b/proto/platform/tenant/v1/attestation.platform.pb.go
index 52bae515..f2036725 100644
--- a/proto/platform/tenant/v1/attestation.platform.pb.go
+++ b/proto/platform/tenant/v1/attestation.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: attestation.platform.proto
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.go b/proto/platform/tenant/v1/cluster.platform.pb.go
index 60f6a6b3..f5807936 100644
--- a/proto/platform/tenant/v1/cluster.platform.pb.go
+++ b/proto/platform/tenant/v1/cluster.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: cluster.platform.proto
@@ -2402,10 +2402,10 @@ var file_cluster_platform_proto_rawDesc = []byte{
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x22, 0x7e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x22, 0x2f, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
- 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a,
- 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x74, 0x65, 0x72, 0x22, 0x7e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x07, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31,
+ 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
0x0a, 0x04, 0xf5, 0x03, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65,
0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
@@ -2430,8 +2430,8 @@ var file_cluster_platform_proto_rawDesc = []byte{
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
- 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x8a, 0xaf,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x8a, 0xaf,
0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xf9, 0x03, 0xf7, 0x03, 0x12, 0x85, 0x01, 0x0a,
0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
@@ -2447,9 +2447,9 @@ var file_cluster_platform_proto_rawDesc = []byte{
0x73, 0x74, 0x65, 0x72, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x20, 0x1a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01,
- 0x2a, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf6, 0x03, 0xc2, 0xf0, 0x8e,
+ 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31,
+ 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf6, 0x03, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76,
diff --git a/proto/platform/tenant/v1/context.platform.pb.go b/proto/platform/tenant/v1/context.platform.pb.go
index e909684b..1c67141d 100644
--- a/proto/platform/tenant/v1/context.platform.pb.go
+++ b/proto/platform/tenant/v1/context.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: context.platform.proto
diff --git a/proto/platform/tenant/v1/namespace.platform.pb.go b/proto/platform/tenant/v1/namespace.platform.pb.go
index 7653afcc..a68fcab2 100644
--- a/proto/platform/tenant/v1/namespace.platform.pb.go
+++ b/proto/platform/tenant/v1/namespace.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: namespace.platform.proto
diff --git a/proto/platform/tenant/v1/node.platform.pb.go b/proto/platform/tenant/v1/node.platform.pb.go
index e5a3eb90..629eedae 100644
--- a/proto/platform/tenant/v1/node.platform.pb.go
+++ b/proto/platform/tenant/v1/node.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: node.platform.proto
diff --git a/proto/platform/tenant/v1/policy_results.platform.pb.go b/proto/platform/tenant/v1/policy_results.platform.pb.go
index 2f395469..29473a76 100644
--- a/proto/platform/tenant/v1/policy_results.platform.pb.go
+++ b/proto/platform/tenant/v1/policy_results.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: policy_results.platform.proto
diff --git a/proto/platform/tenant/v1/record.platform.pb.go b/proto/platform/tenant/v1/record.platform.pb.go
index 61aafa73..fccce90c 100644
--- a/proto/platform/tenant/v1/record.platform.pb.go
+++ b/proto/platform/tenant/v1/record.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: record.platform.proto
diff --git a/proto/platform/tenant/v1/risk.platform.pb.go b/proto/platform/tenant/v1/risk.platform.pb.go
index 0c6c18f7..36988adb 100644
--- a/proto/platform/tenant/v1/risk.platform.pb.go
+++ b/proto/platform/tenant/v1/risk.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: risk.platform.proto
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.go b/proto/platform/tenant/v1/sbom.platform.pb.go
index cd078fb8..6db35c23 100644
--- a/proto/platform/tenant/v1/sbom.platform.pb.go
+++ b/proto/platform/tenant/v1/sbom.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: sbom.platform.proto
diff --git a/proto/platform/tenant/v1/signature.platform.pb.go b/proto/platform/tenant/v1/signature.platform.pb.go
index 894186c0..1320a8b7 100644
--- a/proto/platform/tenant/v1/signature.platform.pb.go
+++ b/proto/platform/tenant/v1/signature.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: signature.platform.proto
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.go b/proto/platform/tenant/v1/vuln.platform.pb.go
index 8712768f..2881b884 100644
--- a/proto/platform/tenant/v1/vuln.platform.pb.go
+++ b/proto/platform/tenant/v1/vuln.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: vuln.platform.proto
diff --git a/proto/platform/tenant/v1/workload.platform.pb.go b/proto/platform/tenant/v1/workload.platform.pb.go
index 2f5c4958..d1e9eb86 100644
--- a/proto/platform/tenant/v1/workload.platform.pb.go
+++ b/proto/platform/tenant/v1/workload.platform.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.1
+// protoc-gen-go v1.33.0
// protoc v3.21.12
// source: workload.platform.proto
From ab6c55da06b7026c499b6bb20b00ffc47c8b9df6 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Fri, 8 Mar 2024 08:21:00 -0800
Subject: [PATCH 08/41] Export b1f10dd5b4cc94a7c98dba09d2b268aed30c0d2e
Export: b1f10dd5b4cc94a7c98dba09d2b268aed30c0d2e
---
go.mod | 7 ++++---
go.sum | 13 ++++++++-----
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/go.mod b/go.mod
index 0a8faf14..3fc84f0c 100644
--- a/go.mod
+++ b/go.mod
@@ -121,6 +121,7 @@ require (
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 // indirect
github.com/spf13/cobra v1.8.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
+ github.com/stretchr/testify v1.9.0 // indirect
github.com/theupdateframework/go-tuf v0.7.0 // indirect
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
go.opencensus.io v0.24.0 // indirect
@@ -130,11 +131,11 @@ require (
go.opentelemetry.io/otel/metric v1.21.0 // indirect
go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.19.0 // indirect
+ golang.org/x/crypto v0.21.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/sync v0.6.0 // indirect
- golang.org/x/sys v0.17.0 // indirect
- golang.org/x/term v0.17.0 // indirect
+ golang.org/x/sys v0.18.0 // indirect
+ golang.org/x/term v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
diff --git a/go.sum b/go.sum
index 0b3c500e..8dd78e3a 100644
--- a/go.sum
+++ b/go.sum
@@ -318,8 +318,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
@@ -360,8 +360,9 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
+golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w=
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
@@ -420,14 +421,16 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
+golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
+golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
From 0cc0929182ded85179322d8845e30b105ffcd01f Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Fri, 8 Mar 2024 08:37:16 -0800
Subject: [PATCH 09/41] Export 74d582772509b37b0ad4febe45eb450814865a95
Export: 74d582772509b37b0ad4febe45eb450814865a95
---
proto/capabilities/capabilities.pb.go | 80 +-
proto/capabilities/capabilities.proto | 4 +-
proto/capabilities/roles.go | 1 +
.../registry/v1/registry.platform.pb.go | 1017 +++++++++++++----
.../registry/v1/registry.platform.pb.gw.go | 119 ++
.../registry/v1/registry.platform.proto | 59 +
.../registry/v1/registry.platform_grpc.pb.go | 61 +-
proto/platform/registry/v1/test/registry.go | 40 +-
8 files changed, 1082 insertions(+), 299 deletions(-)
diff --git a/proto/capabilities/capabilities.pb.go b/proto/capabilities/capabilities.pb.go
index 607c9f62..48cd9f59 100644
--- a/proto/capabilities/capabilities.pb.go
+++ b/proto/capabilities/capabilities.pb.go
@@ -92,6 +92,7 @@ const (
Capability_CAP_TAG_UPDATE Capability = 1612
Capability_CAP_TAG_LIST Capability = 1613
Capability_CAP_TAG_DELETE Capability = 1614
+ Capability_CAP_MANIFEST_METADATA_LIST Capability = 1615
Capability_CAP_SIGSTORE_CREATE Capability = 1701
Capability_CAP_SIGSTORE_UPDATE Capability = 1702
Capability_CAP_SIGSTORE_LIST Capability = 1703
@@ -175,6 +176,7 @@ var (
1612: "CAP_TAG_UPDATE",
1613: "CAP_TAG_LIST",
1614: "CAP_TAG_DELETE",
+ 1615: "CAP_MANIFEST_METADATA_LIST",
1701: "CAP_SIGSTORE_CREATE",
1702: "CAP_SIGSTORE_UPDATE",
1703: "CAP_SIGSTORE_LIST",
@@ -249,6 +251,7 @@ var (
"CAP_TAG_UPDATE": 1612,
"CAP_TAG_LIST": 1613,
"CAP_TAG_DELETE": 1614,
+ "CAP_MANIFEST_METADATA_LIST": 1615,
"CAP_SIGSTORE_CREATE": 1701,
"CAP_SIGSTORE_UPDATE": 1702,
"CAP_SIGSTORE_LIST": 1703,
@@ -326,7 +329,7 @@ var file_capabilities_proto_rawDesc = []byte{
0x2e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x20, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a,
- 0x93, 0x21, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b,
+ 0xd7, 0x21, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b,
0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x15, 0x43,
0x41, 0x50, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x43, 0x52,
0x45, 0x41, 0x54, 0x45, 0x10, 0x65, 0x1a, 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x01, 0x9a, 0xaf, 0xa8,
@@ -570,41 +573,46 @@ var file_capabilities_proto_rawDesc = []byte{
0xd2, 0x05, 0x08, 0x74, 0x61, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x43,
0x41, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xce, 0x0c,
0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x43, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x74, 0x61, 0x67,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53,
- 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa5,
- 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69,
- 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a,
- 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x50,
- 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2b, 0x9a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54,
- 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a, 0x18, 0xa8, 0xcb, 0x91,
- 0x4d, 0x2c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
- 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47,
- 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa8, 0x0d, 0x1a,
- 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73,
- 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x1f, 0x43,
- 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x45, 0x52, 0x54,
- 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xa9,
- 0x0d, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x1b, 0x73, 0x69,
- 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x43, 0x41, 0x50,
- 0x5f, 0x47, 0x55, 0x4c, 0x46, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x90, 0x4e, 0x1a, 0x15,
- 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67, 0x75, 0x6c, 0x66, 0x73,
- 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0xf3, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a,
- 0x36, 0x0a, 0x03, 0x62, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x99, 0xd2, 0x09, 0x20, 0x01,
- 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x74, 0x42, 0x5d, 0x0a, 0x1f, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x63, 0x61,
- 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x11, 0x43, 0x61, 0x70, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
- 0x25, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f,
- 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x1a, 0x43, 0x41, 0x50, 0x5f, 0x4d,
+ 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41,
+ 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x0c, 0x1a, 0x21, 0xa8, 0xcb, 0x91, 0x4d, 0x48, 0x9a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x16, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43,
+ 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41,
+ 0x54, 0x45, 0x10, 0xa5, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2a, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52,
+ 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xa6, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91,
+ 0x4d, 0x2b, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x43, 0x41, 0x50, 0x5f, 0x53,
+ 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x0d, 0x1a,
+ 0x18, 0xa8, 0xcb, 0x91, 0x4d, 0x2c, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0d, 0x73, 0x69, 0x67, 0x73,
+ 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x13, 0x43, 0x41, 0x50,
+ 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
+ 0x10, 0xa8, 0x0d, 0x1a, 0x1a, 0xa8, 0xcb, 0x91, 0x4d, 0x2d, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0f,
+ 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
+ 0x4c, 0x0a, 0x1f, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x49, 0x47, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f,
+ 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41,
+ 0x54, 0x45, 0x10, 0xa9, 0x0d, 0x1a, 0x26, 0xa8, 0xcb, 0x91, 0x4d, 0x2e, 0x9a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x1b, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x69,
+ 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a,
+ 0x0e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x55, 0x4c, 0x46, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10,
+ 0x90, 0x4e, 0x1a, 0x15, 0xa8, 0xcb, 0x91, 0x4d, 0x2f, 0x9a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x67,
+ 0x75, 0x6c, 0x66, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x3a, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf3, 0x85, 0xa5, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x3a, 0x36, 0x0a, 0x03, 0x62, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75,
+ 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x99,
+ 0xd2, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x62, 0x69, 0x74, 0x42, 0x5d, 0x0a, 0x1f, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
+ 0x6b, 0x2e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x11,
+ 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x61,
+ 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
diff --git a/proto/capabilities/capabilities.proto b/proto/capabilities/capabilities.proto
index fdf23627..40ad9cb9 100644
--- a/proto/capabilities/capabilities.proto
+++ b/proto/capabilities/capabilities.proto
@@ -116,6 +116,8 @@ enum Capability {
CAP_TAG_LIST = 1613 [(name) = "tag.list", (bit) = 66];
CAP_TAG_DELETE = 1614 [(name) = "tag.delete", (bit) = 67];
+ CAP_MANIFEST_METADATA_LIST = 1615 [(name) = "manifest.metadata.list", (bit) = 72];
+
// Sigstore-aas
CAP_SIGSTORE_CREATE = 1701 [(name) = "sigstore.create", (bit) = 42];
@@ -133,5 +135,5 @@ enum Capability {
// capability?
CAP_GULFSTREAM = 10000 [(name) = "gulfstream", (bit) = 47];
- // next bit: 70
+ // next bit: 72
}
diff --git a/proto/capabilities/roles.go b/proto/capabilities/roles.go
index 4a76f7a6..12eb7f5d 100644
--- a/proto/capabilities/roles.go
+++ b/proto/capabilities/roles.go
@@ -104,6 +104,7 @@ var (
Capability_CAP_REPO_LIST,
Capability_CAP_MANIFEST_LIST,
Capability_CAP_TAG_LIST,
+ Capability_CAP_MANIFEST_METADATA_LIST,
Capability_CAP_TENANT_RECORD_SIGNATURES_LIST,
Capability_CAP_TENANT_SBOMS_LIST,
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 6a9dc4a3..46cc6135 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -1730,6 +1730,392 @@ func (x *VulnReportRequest) GetDigest() string {
return ""
}
+type ManifestMetadataIndexFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The tag/index digest to fetch metadata for.
+ Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
+ // The architecture to fetch metadata for.
+ Arch string `protobuf:"bytes,2,opt,name=arch,proto3" json:"arch,omitempty"`
+}
+
+func (x *ManifestMetadataIndexFilter) Reset() {
+ *x = ManifestMetadataIndexFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManifestMetadataIndexFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManifestMetadataIndexFilter) ProtoMessage() {}
+
+func (x *ManifestMetadataIndexFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManifestMetadataIndexFilter.ProtoReflect.Descriptor instead.
+func (*ManifestMetadataIndexFilter) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *ManifestMetadataIndexFilter) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+func (x *ManifestMetadataIndexFilter) GetArch() string {
+ if x != nil {
+ return x.Arch
+ }
+ return ""
+}
+
+type ManifestMetadataFilterEntry struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Filter:
+ //
+ // *ManifestMetadataFilterEntry_ImageDigest
+ // *ManifestMetadataFilterEntry_IndexFilter
+ Filter isManifestMetadataFilterEntry_Filter `protobuf_oneof:"filter"`
+}
+
+func (x *ManifestMetadataFilterEntry) Reset() {
+ *x = ManifestMetadataFilterEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManifestMetadataFilterEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManifestMetadataFilterEntry) ProtoMessage() {}
+
+func (x *ManifestMetadataFilterEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[27]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManifestMetadataFilterEntry.ProtoReflect.Descriptor instead.
+func (*ManifestMetadataFilterEntry) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{27}
+}
+
+func (m *ManifestMetadataFilterEntry) GetFilter() isManifestMetadataFilterEntry_Filter {
+ if m != nil {
+ return m.Filter
+ }
+ return nil
+}
+
+func (x *ManifestMetadataFilterEntry) GetImageDigest() string {
+ if x, ok := x.GetFilter().(*ManifestMetadataFilterEntry_ImageDigest); ok {
+ return x.ImageDigest
+ }
+ return ""
+}
+
+func (x *ManifestMetadataFilterEntry) GetIndexFilter() *ManifestMetadataIndexFilter {
+ if x, ok := x.GetFilter().(*ManifestMetadataFilterEntry_IndexFilter); ok {
+ return x.IndexFilter
+ }
+ return nil
+}
+
+type isManifestMetadataFilterEntry_Filter interface {
+ isManifestMetadataFilterEntry_Filter()
+}
+
+type ManifestMetadataFilterEntry_ImageDigest struct {
+ // For fetching metadata for an image digest
+ ImageDigest string `protobuf:"bytes,1,opt,name=image_digest,json=imageDigest,proto3,oneof"`
+}
+
+type ManifestMetadataFilterEntry_IndexFilter struct {
+ // For fetching metadata for an index digest
+ IndexFilter *ManifestMetadataIndexFilter `protobuf:"bytes,2,opt,name=index_filter,json=indexFilter,proto3,oneof"`
+}
+
+func (*ManifestMetadataFilterEntry_ImageDigest) isManifestMetadataFilterEntry_Filter() {}
+
+func (*ManifestMetadataFilterEntry_IndexFilter) isManifestMetadataFilterEntry_Filter() {}
+
+type ManifestMetadataFilter struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The UIDP of the image repo that the digests belongs to.
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ // List of image digests or index digest to fetch package metadata for.
+ // All entries specified would be retrieved.
+ Items []*ManifestMetadataFilterEntry `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *ManifestMetadataFilter) Reset() {
+ *x = ManifestMetadataFilter{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManifestMetadataFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManifestMetadataFilter) ProtoMessage() {}
+
+func (x *ManifestMetadataFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[28]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManifestMetadataFilter.ProtoReflect.Descriptor instead.
+func (*ManifestMetadataFilter) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *ManifestMetadataFilter) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *ManifestMetadataFilter) GetItems() []*ManifestMetadataFilterEntry {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
+type PkgMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // purl of package or subpackage; spec https://github.com/package-url/purl-spec
+ Purl string `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"`
+ // if differ from purl, it means it is a subpackage
+ OriginPurl string `protobuf:"bytes,2,opt,name=origin_purl,json=originPurl,proto3" json:"origin_purl,omitempty"`
+ // date when EOL, date 0-0-0 when not eol
+ EolDate *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=eol_date,json=eolDate,proto3" json:"eol_date,omitempty"`
+ // timestamp when package was built, date 0-0-0 when build timestamp not available
+ BuildTimestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=build_timestamp,json=buildTimestamp,proto3" json:"build_timestamp,omitempty"`
+ // license of package, empty if unknown
+ License string `protobuf:"bytes,5,opt,name=license,proto3" json:"license,omitempty"`
+}
+
+func (x *PkgMetadata) Reset() {
+ *x = PkgMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PkgMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PkgMetadata) ProtoMessage() {}
+
+func (x *PkgMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[29]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PkgMetadata.ProtoReflect.Descriptor instead.
+func (*PkgMetadata) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *PkgMetadata) GetPurl() string {
+ if x != nil {
+ return x.Purl
+ }
+ return ""
+}
+
+func (x *PkgMetadata) GetOriginPurl() string {
+ if x != nil {
+ return x.OriginPurl
+ }
+ return ""
+}
+
+func (x *PkgMetadata) GetEolDate() *timestamppb.Timestamp {
+ if x != nil {
+ return x.EolDate
+ }
+ return nil
+}
+
+func (x *PkgMetadata) GetBuildTimestamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.BuildTimestamp
+ }
+ return nil
+}
+
+func (x *PkgMetadata) GetLicense() string {
+ if x != nil {
+ return x.License
+ }
+ return ""
+}
+
+type ManifestMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Digest of image that packages are associated with.
+ Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
+ // List of packages that are part of image.
+ PkgMetadata []*PkgMetadata `protobuf:"bytes,2,rep,name=pkg_metadata,json=pkgMetadata,proto3" json:"pkg_metadata,omitempty"`
+}
+
+func (x *ManifestMetadata) Reset() {
+ *x = ManifestMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManifestMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManifestMetadata) ProtoMessage() {}
+
+func (x *ManifestMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[30]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManifestMetadata.ProtoReflect.Descriptor instead.
+func (*ManifestMetadata) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *ManifestMetadata) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+func (x *ManifestMetadata) GetPkgMetadata() []*PkgMetadata {
+ if x != nil {
+ return x.PkgMetadata
+ }
+ return nil
+}
+
+type ManifestMetadataList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Items []*ManifestMetadata `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+}
+
+func (x *ManifestMetadataList) Reset() {
+ *x = ManifestMetadataList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ManifestMetadataList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManifestMetadataList) ProtoMessage() {}
+
+func (x *ManifestMetadataList) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[31]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManifestMetadataList.ProtoReflect.Descriptor instead.
+func (*ManifestMetadataList) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *ManifestMetadataList) GetItems() []*ManifestMetadata {
+ if x != nil {
+ return x.Items
+ }
+ return nil
+}
+
type ChangedImageConfig_ChangedUser struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1742,7 +2128,7 @@ type ChangedImageConfig_ChangedUser struct {
func (x *ChangedImageConfig_ChangedUser) Reset() {
*x = ChangedImageConfig_ChangedUser{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[26]
+ mi := &file_registry_platform_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1755,7 +2141,7 @@ func (x *ChangedImageConfig_ChangedUser) String() string {
func (*ChangedImageConfig_ChangedUser) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedUser) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[26]
+ mi := &file_registry_platform_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1797,7 +2183,7 @@ type ChangedImageConfig_ChangedWorkingDir struct {
func (x *ChangedImageConfig_ChangedWorkingDir) Reset() {
*x = ChangedImageConfig_ChangedWorkingDir{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[27]
+ mi := &file_registry_platform_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1810,7 +2196,7 @@ func (x *ChangedImageConfig_ChangedWorkingDir) String() string {
func (*ChangedImageConfig_ChangedWorkingDir) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedWorkingDir) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[27]
+ mi := &file_registry_platform_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1852,7 +2238,7 @@ type ChangedImageConfig_EntrypointDiff struct {
func (x *ChangedImageConfig_EntrypointDiff) Reset() {
*x = ChangedImageConfig_EntrypointDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[28]
+ mi := &file_registry_platform_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1865,7 +2251,7 @@ func (x *ChangedImageConfig_EntrypointDiff) String() string {
func (*ChangedImageConfig_EntrypointDiff) ProtoMessage() {}
func (x *ChangedImageConfig_EntrypointDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[28]
+ mi := &file_registry_platform_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1907,7 +2293,7 @@ type ChangedImageConfig_EnvDiff struct {
func (x *ChangedImageConfig_EnvDiff) Reset() {
*x = ChangedImageConfig_EnvDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[29]
+ mi := &file_registry_platform_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1920,7 +2306,7 @@ func (x *ChangedImageConfig_EnvDiff) String() string {
func (*ChangedImageConfig_EnvDiff) ProtoMessage() {}
func (x *ChangedImageConfig_EnvDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[29]
+ mi := &file_registry_platform_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1962,7 +2348,7 @@ type ChangedImageConfig_CmdDiff struct {
func (x *ChangedImageConfig_CmdDiff) Reset() {
*x = ChangedImageConfig_CmdDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[30]
+ mi := &file_registry_platform_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1975,7 +2361,7 @@ func (x *ChangedImageConfig_CmdDiff) String() string {
func (*ChangedImageConfig_CmdDiff) ProtoMessage() {}
func (x *ChangedImageConfig_CmdDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[30]
+ mi := &file_registry_platform_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2017,7 +2403,7 @@ type ChangedImageConfig_ChangedStopSignal struct {
func (x *ChangedImageConfig_ChangedStopSignal) Reset() {
*x = ChangedImageConfig_ChangedStopSignal{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[31]
+ mi := &file_registry_platform_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2030,7 +2416,7 @@ func (x *ChangedImageConfig_ChangedStopSignal) String() string {
func (*ChangedImageConfig_ChangedStopSignal) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedStopSignal) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[31]
+ mi := &file_registry_platform_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2069,7 +2455,7 @@ type ChangedImageConfig_Volume struct {
func (x *ChangedImageConfig_Volume) Reset() {
*x = ChangedImageConfig_Volume{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[32]
+ mi := &file_registry_platform_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2082,7 +2468,7 @@ func (x *ChangedImageConfig_Volume) String() string {
func (*ChangedImageConfig_Volume) ProtoMessage() {}
func (x *ChangedImageConfig_Volume) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[32]
+ mi := &file_registry_platform_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2110,7 +2496,7 @@ type ChangedImageConfig_VolumeDiff struct {
func (x *ChangedImageConfig_VolumeDiff) Reset() {
*x = ChangedImageConfig_VolumeDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[33]
+ mi := &file_registry_platform_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2123,7 +2509,7 @@ func (x *ChangedImageConfig_VolumeDiff) String() string {
func (*ChangedImageConfig_VolumeDiff) ProtoMessage() {}
func (x *ChangedImageConfig_VolumeDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[33]
+ mi := &file_registry_platform_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2166,7 +2552,7 @@ type PackagesDiff_ChangedPackageReference struct {
func (x *PackagesDiff_ChangedPackageReference) Reset() {
*x = PackagesDiff_ChangedPackageReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[36]
+ mi := &file_registry_platform_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2179,7 +2565,7 @@ func (x *PackagesDiff_ChangedPackageReference) String() string {
func (*PackagesDiff_ChangedPackageReference) ProtoMessage() {}
func (x *PackagesDiff_ChangedPackageReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[36]
+ mi := &file_registry_platform_proto_msgTypes[42]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2559,160 +2945,225 @@ var file_registry_platform_proto_rawDesc = []byte{
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x2a, 0x3f,
- 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b, 0x0a,
- 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x52,
- 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44,
- 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x32,
- 0xd3, 0x11, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01, 0x0a,
- 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49,
+ 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e,
+ 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48,
+ 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08,
+ 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65,
+ 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69,
+ 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f,
+ 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74,
+ 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
+ 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c,
+ 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70,
+ 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61,
+ 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
+ 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c,
+ 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07,
+ 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x32, 0x9b, 0x13, 0x0a, 0x08, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01,
+ 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
- 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22,
- 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0,
+ 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a,
+ 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a,
+ 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f,
+ 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0,
0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65,
- 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e,
- 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73,
- 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01, 0x0a,
- 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
+ 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
+ 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
- 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f,
- 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
- 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61,
+ 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e,
0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
- 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a,
- 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61,
- 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x4c,
- 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12,
- 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61,
- 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10, 0x01,
- 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
- 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74,
- 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c, 0x12,
- 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12,
+ 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54,
+ 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a,
+ 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54,
+ 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
+ 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64,
+ 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c,
+ 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
+ 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c,
+ 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66,
- 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66,
- 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f,
- 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01, 0x0a,
- 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
- 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
- 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26,
+ 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06,
+ 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62,
+ 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32,
+ 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c,
- 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
- 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
- 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f,
+ 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12,
+ 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
+ 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -2728,7 +3179,7 @@ func file_registry_platform_proto_rawDescGZIP() []byte {
}
var file_registry_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
+var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 43)
var file_registry_platform_proto_goTypes = []interface{}{
(CatalogTier)(0), // 0: chainguard.platform.registry.CatalogTier
(*Repo)(nil), // 1: chainguard.platform.registry.Repo
@@ -2757,93 +3208,107 @@ var file_registry_platform_proto_goTypes = []interface{}{
(*DiffImageRequest)(nil), // 24: chainguard.platform.registry.DiffImageRequest
(*SbomRequest)(nil), // 25: chainguard.platform.registry.SbomRequest
(*VulnReportRequest)(nil), // 26: chainguard.platform.registry.VulnReportRequest
- (*ChangedImageConfig_ChangedUser)(nil), // 27: chainguard.platform.registry.ChangedImageConfig.ChangedUser
- (*ChangedImageConfig_ChangedWorkingDir)(nil), // 28: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- (*ChangedImageConfig_EntrypointDiff)(nil), // 29: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- (*ChangedImageConfig_EnvDiff)(nil), // 30: chainguard.platform.registry.ChangedImageConfig.EnvDiff
- (*ChangedImageConfig_CmdDiff)(nil), // 31: chainguard.platform.registry.ChangedImageConfig.CmdDiff
- (*ChangedImageConfig_ChangedStopSignal)(nil), // 32: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- (*ChangedImageConfig_Volume)(nil), // 33: chainguard.platform.registry.ChangedImageConfig.Volume
- (*ChangedImageConfig_VolumeDiff)(nil), // 34: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- nil, // 35: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- nil, // 36: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- (*PackagesDiff_ChangedPackageReference)(nil), // 37: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*v1.UIDPFilter)(nil), // 38: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp
- (*v11.Scanner)(nil), // 40: chainguard.platform.tenant.Scanner
- (*emptypb.Empty)(nil), // 41: google.protobuf.Empty
- (*v11.Sbom2)(nil), // 42: chainguard.platform.tenant.Sbom2
- (*v11.VulnReport)(nil), // 43: chainguard.platform.tenant.VulnReport
+ (*ManifestMetadataIndexFilter)(nil), // 27: chainguard.platform.registry.ManifestMetadataIndexFilter
+ (*ManifestMetadataFilterEntry)(nil), // 28: chainguard.platform.registry.ManifestMetadataFilterEntry
+ (*ManifestMetadataFilter)(nil), // 29: chainguard.platform.registry.ManifestMetadataFilter
+ (*PkgMetadata)(nil), // 30: chainguard.platform.registry.PkgMetadata
+ (*ManifestMetadata)(nil), // 31: chainguard.platform.registry.ManifestMetadata
+ (*ManifestMetadataList)(nil), // 32: chainguard.platform.registry.ManifestMetadataList
+ (*ChangedImageConfig_ChangedUser)(nil), // 33: chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ (*ChangedImageConfig_ChangedWorkingDir)(nil), // 34: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ (*ChangedImageConfig_EntrypointDiff)(nil), // 35: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ (*ChangedImageConfig_EnvDiff)(nil), // 36: chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ (*ChangedImageConfig_CmdDiff)(nil), // 37: chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ (*ChangedImageConfig_ChangedStopSignal)(nil), // 38: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ (*ChangedImageConfig_Volume)(nil), // 39: chainguard.platform.registry.ChangedImageConfig.Volume
+ (*ChangedImageConfig_VolumeDiff)(nil), // 40: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ nil, // 41: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ nil, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ (*PackagesDiff_ChangedPackageReference)(nil), // 43: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ (*v1.UIDPFilter)(nil), // 44: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp
+ (*v11.Scanner)(nil), // 46: chainguard.platform.tenant.Scanner
+ (*emptypb.Empty)(nil), // 47: google.protobuf.Empty
+ (*v11.Sbom2)(nil), // 48: chainguard.platform.tenant.Sbom2
+ (*v11.VulnReport)(nil), // 49: chainguard.platform.tenant.VulnReport
}
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 38, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 44, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 39, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 38, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 39, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 45, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 44, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 45, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 39, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 39, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 45, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 45, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 39, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 45, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
18, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
21, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 27, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 28, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 29, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 30, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 31, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 32, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 34, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 33, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 34, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 35, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 36, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 37, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 38, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 40, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
20, // 25: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
20, // 26: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 37, // 27: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 43, // 27: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
23, // 28: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
23, // 29: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
22, // 30: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 40, // 31: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 39, // 32: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 35, // 33: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 36, // 34: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 33, // 35: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 33, // 36: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 19, // 37: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 19, // 38: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 39: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 40: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 41: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 42: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 43: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 44: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 45: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 46: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 47: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 24, // 48: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 25, // 49: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 26, // 50: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 1, // 51: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 53: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 41, // 54: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 55: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 56: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 41, // 57: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 58: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 59: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 60: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 42, // 61: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 43, // 62: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 51, // [51:63] is the sub-list for method output_type
- 39, // [39:51] is the sub-list for method input_type
- 39, // [39:39] is the sub-list for extension type_name
- 39, // [39:39] is the sub-list for extension extendee
- 0, // [0:39] is the sub-list for field type_name
+ 46, // 31: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 45, // 32: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 27, // 33: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 28, // 34: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 45, // 35: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 45, // 36: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 30, // 37: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 31, // 38: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 41, // 39: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 42, // 40: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 39, // 41: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 39, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 19, // 43: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 19, // 44: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 45: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 46: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 47: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 48: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 49: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 50: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 51: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 52: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 53: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 24, // 54: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 25, // 55: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 26, // 56: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 29, // 57: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 58: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 59: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 60: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 47, // 61: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 62: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 63: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 47, // 64: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 65: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 66: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 67: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 48, // 68: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 49, // 69: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 32, // 70: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 58, // [58:71] is the sub-list for method output_type
+ 45, // [45:58] is the sub-list for method input_type
+ 45, // [45:45] is the sub-list for extension type_name
+ 45, // [45:45] is the sub-list for extension extendee
+ 0, // [0:45] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
@@ -3165,7 +3630,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedUser); i {
+ switch v := v.(*ManifestMetadataIndexFilter); i {
case 0:
return &v.state
case 1:
@@ -3177,7 +3642,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
+ switch v := v.(*ManifestMetadataFilterEntry); i {
case 0:
return &v.state
case 1:
@@ -3189,7 +3654,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
+ switch v := v.(*ManifestMetadataFilter); i {
case 0:
return &v.state
case 1:
@@ -3201,7 +3666,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EnvDiff); i {
+ switch v := v.(*PkgMetadata); i {
case 0:
return &v.state
case 1:
@@ -3213,7 +3678,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_CmdDiff); i {
+ switch v := v.(*ManifestMetadata); i {
case 0:
return &v.state
case 1:
@@ -3225,7 +3690,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
+ switch v := v.(*ManifestMetadataList); i {
case 0:
return &v.state
case 1:
@@ -3237,7 +3702,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_Volume); i {
+ switch v := v.(*ChangedImageConfig_ChangedUser); i {
case 0:
return &v.state
case 1:
@@ -3249,7 +3714,31 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_VolumeDiff); i {
+ switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_EnvDiff); i {
case 0:
return &v.state
case 1:
@@ -3261,6 +3750,54 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_CmdDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_Volume); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_VolumeDiff); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PackagesDiff_ChangedPackageReference); i {
case 0:
return &v.state
@@ -3273,13 +3810,17 @@ func file_registry_platform_proto_init() {
}
}
}
+ file_registry_platform_proto_msgTypes[27].OneofWrappers = []interface{}{
+ (*ManifestMetadataFilterEntry_ImageDigest)(nil),
+ (*ManifestMetadataFilterEntry_IndexFilter)(nil),
+ }
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_registry_platform_proto_rawDesc,
NumEnums: 1,
- NumMessages: 37,
+ NumMessages: 43,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/proto/platform/registry/v1/registry.platform.pb.gw.go b/proto/platform/registry/v1/registry.platform.pb.gw.go
index aa5a11c4..4789185d 100644
--- a/proto/platform/registry/v1/registry.platform.pb.gw.go
+++ b/proto/platform/registry/v1/registry.platform.pb.gw.go
@@ -763,6 +763,76 @@ func local_request_Registry_GetVulnReport_0(ctx context.Context, marshaler runti
}
+var (
+ filter_Registry_ListManifestMetadata_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
+)
+
+func request_Registry_ListManifestMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ManifestMetadataFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListManifestMetadata_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.ListManifestMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_ListManifestMetadata_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ManifestMetadataFilter
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_ListManifestMetadata_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.ListManifestMetadata(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
// RegisterRegistryHandlerServer registers the http handlers for service Registry to "mux".
// UnaryRPC :call RegistryServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@@ -1057,6 +1127,30 @@ func RegisterRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMux, s
})
+ mux.Handle("GET", pattern_Registry_ListManifestMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListManifestMetadata", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/manifestmetdata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_ListManifestMetadata_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListManifestMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
return nil
}
@@ -1350,6 +1444,27 @@ func RegisterRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMux, c
})
+ mux.Handle("GET", pattern_Registry_ListManifestMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/ListManifestMetadata", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/manifestmetdata"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_ListManifestMetadata_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_ListManifestMetadata_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
return nil
}
@@ -1377,6 +1492,8 @@ var (
pattern_Registry_GetSbom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "sbom"}, ""))
pattern_Registry_GetVulnReport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "vulnreport"}, ""))
+
+ pattern_Registry_ListManifestMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "repos", "repo_id", "manifestmetdata"}, ""))
)
var (
@@ -1403,4 +1520,6 @@ var (
forward_Registry_GetSbom_0 = runtime.ForwardResponseMessage
forward_Registry_GetVulnReport_0 = runtime.ForwardResponseMessage
+
+ forward_Registry_ListManifestMetadata_0 = runtime.ForwardResponseMessage
)
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index a62fc737..ba3c2cf1 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -184,6 +184,17 @@ service Registry {
}
};
}
+
+ rpc ListManifestMetadata(ManifestMetadataFilter) returns (ManifestMetadataList) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos/{repo_id=**}/manifestmetdata"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_MANIFEST_METADATA_LIST]
+ }
+ };
+ };
}
message Repo {
@@ -455,3 +466,51 @@ message VulnReportRequest {
// The digest of the image to get a VulnReport for.
string digest = 2;
}
+
+message ManifestMetadataIndexFilter {
+ // The tag/index digest to fetch metadata for.
+ string digest = 1;
+ // The architecture to fetch metadata for.
+ string arch = 2;
+}
+
+message ManifestMetadataFilterEntry {
+ oneof filter {
+ // For fetching metadata for an image digest
+ string image_digest = 1;
+ // For fetching metadata for an index digest
+ ManifestMetadataIndexFilter index_filter = 2;
+ }
+}
+
+message ManifestMetadataFilter {
+ // The UIDP of the image repo that the digests belongs to.
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // List of image digests or index digest to fetch package metadata for.
+ // All entries specified would be retrieved.
+ repeated ManifestMetadataFilterEntry items = 2;
+}
+
+message PkgMetadata {
+ // purl of package or subpackage; spec https://github.com/package-url/purl-spec
+ string purl = 1;
+ // if differ from purl, it means it is a subpackage
+ string origin_purl = 2;
+ // date when EOL, date 0-0-0 when not eol
+ google.protobuf.Timestamp eol_date = 3;
+ // timestamp when package was built, date 0-0-0 when build timestamp not available
+ google.protobuf.Timestamp build_timestamp = 4;
+ // license of package, empty if unknown
+ string license = 5;
+}
+
+message ManifestMetadata {
+ // Digest of image that packages are associated with.
+ string digest = 1;
+ // List of packages that are part of image.
+ repeated PkgMetadata pkg_metadata = 2;
+}
+
+message ManifestMetadataList {
+ repeated ManifestMetadata items = 1;
+}
diff --git a/proto/platform/registry/v1/registry.platform_grpc.pb.go b/proto/platform/registry/v1/registry.platform_grpc.pb.go
index a0faf126..fe91f502 100644
--- a/proto/platform/registry/v1/registry.platform_grpc.pb.go
+++ b/proto/platform/registry/v1/registry.platform_grpc.pb.go
@@ -21,18 +21,19 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
- Registry_CreateRepo_FullMethodName = "/chainguard.platform.registry.Registry/CreateRepo"
- Registry_UpdateRepo_FullMethodName = "/chainguard.platform.registry.Registry/UpdateRepo"
- Registry_ListRepos_FullMethodName = "/chainguard.platform.registry.Registry/ListRepos"
- Registry_DeleteRepo_FullMethodName = "/chainguard.platform.registry.Registry/DeleteRepo"
- Registry_CreateTag_FullMethodName = "/chainguard.platform.registry.Registry/CreateTag"
- Registry_UpdateTag_FullMethodName = "/chainguard.platform.registry.Registry/UpdateTag"
- Registry_DeleteTag_FullMethodName = "/chainguard.platform.registry.Registry/DeleteTag"
- Registry_ListTags_FullMethodName = "/chainguard.platform.registry.Registry/ListTags"
- Registry_ListTagHistory_FullMethodName = "/chainguard.platform.registry.Registry/ListTagHistory"
- Registry_DiffImage_FullMethodName = "/chainguard.platform.registry.Registry/DiffImage"
- Registry_GetSbom_FullMethodName = "/chainguard.platform.registry.Registry/GetSbom"
- Registry_GetVulnReport_FullMethodName = "/chainguard.platform.registry.Registry/GetVulnReport"
+ Registry_CreateRepo_FullMethodName = "/chainguard.platform.registry.Registry/CreateRepo"
+ Registry_UpdateRepo_FullMethodName = "/chainguard.platform.registry.Registry/UpdateRepo"
+ Registry_ListRepos_FullMethodName = "/chainguard.platform.registry.Registry/ListRepos"
+ Registry_DeleteRepo_FullMethodName = "/chainguard.platform.registry.Registry/DeleteRepo"
+ Registry_CreateTag_FullMethodName = "/chainguard.platform.registry.Registry/CreateTag"
+ Registry_UpdateTag_FullMethodName = "/chainguard.platform.registry.Registry/UpdateTag"
+ Registry_DeleteTag_FullMethodName = "/chainguard.platform.registry.Registry/DeleteTag"
+ Registry_ListTags_FullMethodName = "/chainguard.platform.registry.Registry/ListTags"
+ Registry_ListTagHistory_FullMethodName = "/chainguard.platform.registry.Registry/ListTagHistory"
+ Registry_DiffImage_FullMethodName = "/chainguard.platform.registry.Registry/DiffImage"
+ Registry_GetSbom_FullMethodName = "/chainguard.platform.registry.Registry/GetSbom"
+ Registry_GetVulnReport_FullMethodName = "/chainguard.platform.registry.Registry/GetVulnReport"
+ Registry_ListManifestMetadata_FullMethodName = "/chainguard.platform.registry.Registry/ListManifestMetadata"
)
// RegistryClient is the client API for Registry service.
@@ -51,6 +52,7 @@ type RegistryClient interface {
DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error)
GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error)
GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error)
+ ListManifestMetadata(ctx context.Context, in *ManifestMetadataFilter, opts ...grpc.CallOption) (*ManifestMetadataList, error)
}
type registryClient struct {
@@ -169,6 +171,15 @@ func (c *registryClient) GetVulnReport(ctx context.Context, in *VulnReportReques
return out, nil
}
+func (c *registryClient) ListManifestMetadata(ctx context.Context, in *ManifestMetadataFilter, opts ...grpc.CallOption) (*ManifestMetadataList, error) {
+ out := new(ManifestMetadataList)
+ err := c.cc.Invoke(ctx, Registry_ListManifestMetadata_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// RegistryServer is the server API for Registry service.
// All implementations must embed UnimplementedRegistryServer
// for forward compatibility
@@ -185,6 +196,7 @@ type RegistryServer interface {
DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error)
GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error)
GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error)
+ ListManifestMetadata(context.Context, *ManifestMetadataFilter) (*ManifestMetadataList, error)
mustEmbedUnimplementedRegistryServer()
}
@@ -228,6 +240,9 @@ func (UnimplementedRegistryServer) GetSbom(context.Context, *SbomRequest) (*v1.S
func (UnimplementedRegistryServer) GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetVulnReport not implemented")
}
+func (UnimplementedRegistryServer) ListManifestMetadata(context.Context, *ManifestMetadataFilter) (*ManifestMetadataList, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ListManifestMetadata not implemented")
+}
func (UnimplementedRegistryServer) mustEmbedUnimplementedRegistryServer() {}
// UnsafeRegistryServer may be embedded to opt out of forward compatibility for this service.
@@ -457,6 +472,24 @@ func _Registry_GetVulnReport_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
+func _Registry_ListManifestMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ManifestMetadataFilter)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).ListManifestMetadata(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_ListManifestMetadata_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).ListManifestMetadata(ctx, req.(*ManifestMetadataFilter))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
// Registry_ServiceDesc is the grpc.ServiceDesc for Registry service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -512,6 +545,10 @@ var Registry_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetVulnReport",
Handler: _Registry_GetVulnReport_Handler,
},
+ {
+ MethodName: "ListManifestMetadata",
+ Handler: _Registry_ListManifestMetadata_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "registry.platform.proto",
diff --git a/proto/platform/registry/v1/test/registry.go b/proto/platform/registry/v1/test/registry.go
index b1e21513..82493f9c 100644
--- a/proto/platform/registry/v1/test/registry.go
+++ b/proto/platform/registry/v1/test/registry.go
@@ -38,18 +38,19 @@ var _ registry.RegistryClient = (*MockRegistryClient)(nil)
type MockRegistryClient struct {
registry.RegistryClient
- OnCreateRepos []ReposOnCreate
- OnDeleteRepos []ReposOnDelete
- OnListRepos []ReposOnList
- OnCreateTags []TagsOnCreate
- OnDeleteTags []TagsOnDelete
- OnUpdateTag []TagOnUpdate
- OnListTags []TagsOnList
- OnUpdateRepo []RepoOnUpdate
- OnListTagHistory []TagHistoryOnList
- OnGetSbom []SbomOnGet
- OnGetVulnReport []VulnReportOnGet
- OnDiffImage []DiffImage
+ OnCreateRepos []ReposOnCreate
+ OnDeleteRepos []ReposOnDelete
+ OnListRepos []ReposOnList
+ OnCreateTags []TagsOnCreate
+ OnDeleteTags []TagsOnDelete
+ OnUpdateTag []TagOnUpdate
+ OnListTags []TagsOnList
+ OnUpdateRepo []RepoOnUpdate
+ OnListTagHistory []TagHistoryOnList
+ OnGetSbom []SbomOnGet
+ OnGetVulnReport []VulnReportOnGet
+ OnDiffImage []DiffImage
+ OnListManifestMetadata []ManifestMetadataOnList
}
type DiffImage struct {
@@ -122,6 +123,12 @@ type VulnReportOnGet struct {
Error error
}
+type ManifestMetadataOnList struct {
+ Given *registry.ManifestMetadataFilter
+ List *registry.ManifestMetadataList
+ Error error
+}
+
func (m MockRegistryClient) CreateRepo(_ context.Context, given *registry.CreateRepoRequest, _ ...grpc.CallOption) (*registry.Repo, error) {
for _, o := range m.OnCreateRepos {
if cmp.Equal(o.Given, given, protocmp.Transform()) {
@@ -229,3 +236,12 @@ func (m MockRegistryClient) DiffImage(_ context.Context, given *registry.DiffIma
}
return nil, fmt.Errorf("mock not found for %v", given)
}
+
+func (m MockRegistryClient) ListManifestMetadata(_ context.Context, given *registry.ManifestMetadataFilter, _ ...grpc.CallOption) (*registry.ManifestMetadataList, error) {
+ for _, o := range m.OnListManifestMetadata {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.List, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
From 334eabbedf7d83e47b7f88ddd24840b0cd8bfb6d Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Fri, 8 Mar 2024 16:57:32 -0500
Subject: [PATCH 10/41] Export 7f100f813caef9ebb03d126790b19726aff84bd2
Export: 7f100f813caef9ebb03d126790b19726aff84bd2
---
.../iam/v1/role_binding.platform.pb.go | 274 ++++++++++--------
.../iam/v1/role_binding.platform.proto | 3 +
2 files changed, 149 insertions(+), 128 deletions(-)
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
index 2b0ba2a2..40b25231 100644
--- a/proto/platform/iam/v1/role_binding.platform.pb.go
+++ b/proto/platform/iam/v1/role_binding.platform.pb.go
@@ -13,6 +13,7 @@ import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
emptypb "google.golang.org/protobuf/types/known/emptypb"
+ timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
@@ -331,6 +332,8 @@ type RoleBindingList_Binding struct {
ClaimMatchIssuer string `protobuf:"bytes,6,opt,name=claim_match_issuer,json=claimMatchIssuer,proto3" json:"claim_match_issuer,omitempty"`
// ClaimMatch subject of the bound identity.
ClaimMatchSubject string `protobuf:"bytes,7,opt,name=claim_match_subject,json=claimMatchSubject,proto3" json:"claim_match_subject,omitempty"`
+ // created_at is the timestamp for when the role binding was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
}
func (x *RoleBindingList_Binding) Reset() {
@@ -414,6 +417,13 @@ func (x *RoleBindingList_Binding) GetClaimMatchSubject() string {
return ""
}
+func (x *RoleBindingList_Binding) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
var File_role_binding_platform_proto protoreflect.FileDescriptor
var file_role_binding_platform_proto_rawDesc = []byte{
@@ -424,119 +434,125 @@ var file_role_binding_platform_proto_rawDesc = []byte{
0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61,
- 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a,
- 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xee, 0x02, 0x0a, 0x0f, 0x52, 0x6f, 0x6c, 0x65,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
- 0x79, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6c,
- 0x61, 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x61, 0x69,
- 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74, 0x63,
- 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a,
- 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68,
+ 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
+ 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f,
+ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x13, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x42,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a,
+ 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xa9, 0x03, 0x0a, 0x0f, 0x52, 0x6f, 0x6c,
+ 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
- 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
- 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
- 0x02, 0x69, 0x64, 0x32, 0x93, 0x06, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
- 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xcd, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
+ 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63,
+ 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65,
+ 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61,
+ 0x74, 0x63, 0x68, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x61,
+ 0x69, 0x6d, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x4d, 0x61, 0x74,
+ 0x63, 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64,
+ 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
+ 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c,
- 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x30, 0x3a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
- 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e,
- 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e,
- 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65,
- 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a,
- 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42,
- 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63,
+ 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0b,
+ 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x32, 0x0a, 0x18, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32,
+ 0x93, 0x06, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x12, 0xe5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
+ 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x0c, 0x72,
+ 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a,
+ 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
+ 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
+ 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03,
- 0x10, 0x01, 0x12, 0xc4, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f,
- 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e,
- 0x2a, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x94, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39,
- 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e,
- 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
- 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42,
- 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03, 0x10, 0x01, 0x12, 0xc4,
+ 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
+ 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x69,
+ 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x12, 0x04, 0x0a, 0x02, 0x94, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -562,27 +578,29 @@ var file_role_binding_platform_proto_goTypes = []interface{}{
(*v1.UIDPFilter)(nil), // 6: chainguard.platform.common.UIDPFilter
(*Group)(nil), // 7: chainguard.platform.iam.Group
(*Role)(nil), // 8: chainguard.platform.iam.Role
- (*emptypb.Empty)(nil), // 9: google.protobuf.Empty
+ (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
+ (*emptypb.Empty)(nil), // 10: google.protobuf.Empty
}
var file_role_binding_platform_proto_depIdxs = []int32{
- 5, // 0: chainguard.platform.iam.RoleBindingList.items:type_name -> chainguard.platform.iam.RoleBindingList.Binding
- 6, // 1: chainguard.platform.iam.RoleBindingFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 0, // 2: chainguard.platform.iam.CreateRoleBindingRequest.role_binding:type_name -> chainguard.platform.iam.RoleBinding
- 7, // 3: chainguard.platform.iam.RoleBindingList.Binding.group:type_name -> chainguard.platform.iam.Group
- 8, // 4: chainguard.platform.iam.RoleBindingList.Binding.role:type_name -> chainguard.platform.iam.Role
- 3, // 5: chainguard.platform.iam.RoleBindings.Create:input_type -> chainguard.platform.iam.CreateRoleBindingRequest
- 0, // 6: chainguard.platform.iam.RoleBindings.Update:input_type -> chainguard.platform.iam.RoleBinding
- 2, // 7: chainguard.platform.iam.RoleBindings.List:input_type -> chainguard.platform.iam.RoleBindingFilter
- 4, // 8: chainguard.platform.iam.RoleBindings.Delete:input_type -> chainguard.platform.iam.DeleteRoleBindingRequest
- 0, // 9: chainguard.platform.iam.RoleBindings.Create:output_type -> chainguard.platform.iam.RoleBinding
- 0, // 10: chainguard.platform.iam.RoleBindings.Update:output_type -> chainguard.platform.iam.RoleBinding
- 1, // 11: chainguard.platform.iam.RoleBindings.List:output_type -> chainguard.platform.iam.RoleBindingList
- 9, // 12: chainguard.platform.iam.RoleBindings.Delete:output_type -> google.protobuf.Empty
- 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
+ 5, // 0: chainguard.platform.iam.RoleBindingList.items:type_name -> chainguard.platform.iam.RoleBindingList.Binding
+ 6, // 1: chainguard.platform.iam.RoleBindingFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 0, // 2: chainguard.platform.iam.CreateRoleBindingRequest.role_binding:type_name -> chainguard.platform.iam.RoleBinding
+ 7, // 3: chainguard.platform.iam.RoleBindingList.Binding.group:type_name -> chainguard.platform.iam.Group
+ 8, // 4: chainguard.platform.iam.RoleBindingList.Binding.role:type_name -> chainguard.platform.iam.Role
+ 9, // 5: chainguard.platform.iam.RoleBindingList.Binding.created_at:type_name -> google.protobuf.Timestamp
+ 3, // 6: chainguard.platform.iam.RoleBindings.Create:input_type -> chainguard.platform.iam.CreateRoleBindingRequest
+ 0, // 7: chainguard.platform.iam.RoleBindings.Update:input_type -> chainguard.platform.iam.RoleBinding
+ 2, // 8: chainguard.platform.iam.RoleBindings.List:input_type -> chainguard.platform.iam.RoleBindingFilter
+ 4, // 9: chainguard.platform.iam.RoleBindings.Delete:input_type -> chainguard.platform.iam.DeleteRoleBindingRequest
+ 0, // 10: chainguard.platform.iam.RoleBindings.Create:output_type -> chainguard.platform.iam.RoleBinding
+ 0, // 11: chainguard.platform.iam.RoleBindings.Update:output_type -> chainguard.platform.iam.RoleBinding
+ 1, // 12: chainguard.platform.iam.RoleBindings.List:output_type -> chainguard.platform.iam.RoleBindingList
+ 10, // 13: chainguard.platform.iam.RoleBindings.Delete:output_type -> google.protobuf.Empty
+ 10, // [10:14] is the sub-list for method output_type
+ 6, // [6:10] 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_role_binding_platform_proto_init() }
diff --git a/proto/platform/iam/v1/role_binding.platform.proto b/proto/platform/iam/v1/role_binding.platform.proto
index 9ee50f0d..1041b77f 100644
--- a/proto/platform/iam/v1/role_binding.platform.proto
+++ b/proto/platform/iam/v1/role_binding.platform.proto
@@ -9,6 +9,7 @@ package chainguard.platform.iam;
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
+import "google/protobuf/timestamp.proto";
import "annotations/auth.proto";
import "annotations/events.proto";
import "platform/common/v1/uidp.platform.proto";
@@ -107,6 +108,8 @@ message RoleBindingList {
string claim_match_issuer = 6;
// ClaimMatch subject of the bound identity.
string claim_match_subject = 7;
+ // created_at is the timestamp for when the role binding was created.
+ google.protobuf.Timestamp created_at = 8;
}
repeated Binding items = 1;
}
From 4ab9495a7a28468750094a66432a5689aa3c0d45 Mon Sep 17 00:00:00 2001
From: Billy Lynch <1844673+wlynch@users.noreply.github.com>
Date: Mon, 11 Mar 2024 16:38:42 -0400
Subject: [PATCH 11/41] Export 92f388b520656141575251f16074b63b81013d76
Export: 92f388b520656141575251f16074b63b81013d76
---
.github/chainguard/mono.sts.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/chainguard/mono.sts.yaml b/.github/chainguard/mono.sts.yaml
index 7e2cfc2a..d6df301c 100644
--- a/.github/chainguard/mono.sts.yaml
+++ b/.github/chainguard/mono.sts.yaml
@@ -9,3 +9,4 @@ claim_pattern:
permissions:
contents: write
pull_requests: write
+ workflows: write
From 24a64457eef44a3acd1528cc47a6c592f599a9da Mon Sep 17 00:00:00 2001
From: Billy Lynch <1844673+wlynch@users.noreply.github.com>
Date: Mon, 11 Mar 2024 17:02:37 -0400
Subject: [PATCH 12/41] Export 83b72f8e9dfa60e18bed164448ed531a1ddf8446
Export: 83b72f8e9dfa60e18bed164448ed531a1ddf8446
---
.chainguard/source.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.chainguard/source.yaml b/.chainguard/source.yaml
index 4322b525..8a710d38 100644
--- a/.chainguard/source.yaml
+++ b/.chainguard/source.yaml
@@ -8,6 +8,8 @@ spec:
identities:
- subjectRegExp: .+@chainguard.dev$
issuer: https://accounts.google.com
+ - subject: https://github.com/chainguard-dev/mono/.github/workflows/export-sdk.yaml@refs/heads/main
+ issuer: https://token.actions.githubusercontent.com
ctlog:
url: https://rekor.sigstore.dev
- key:
From aee585546d304028d460ddd08340ce55a9450740 Mon Sep 17 00:00:00 2001
From: Billy Lynch <1844673+wlynch@users.noreply.github.com>
Date: Tue, 12 Mar 2024 11:11:35 -0400
Subject: [PATCH 13/41] Export 1738beb92650a1583936886fcdc362bbb5dceaa5
Export: 1738beb92650a1583936886fcdc362bbb5dceaa5
---
.github/chainguard/mono.sts.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/chainguard/mono.sts.yaml b/.github/chainguard/mono.sts.yaml
index d6df301c..a2efdb5a 100644
--- a/.github/chainguard/mono.sts.yaml
+++ b/.github/chainguard/mono.sts.yaml
@@ -4,7 +4,7 @@
issuer: https://token.actions.githubusercontent.com
subject_pattern: repo:chainguard-dev/mono:ref:refs/heads/main
claim_pattern:
- job_workflow_ref: chainguard-dev/mono/.github/workflows/export-sdk.yaml@refs/heads/main
+ job_workflow_ref: chainguard-dev/mono/.github/workflows/(export|publish)-sdk.yaml@refs/heads/main
permissions:
contents: write
From efa273aad01e91a67f0f8f4032c8a7c76a4d98f0 Mon Sep 17 00:00:00 2001
From: Colin Douglas <16968564+cmdpdx@users.noreply.github.com>
Date: Mon, 18 Mar 2024 10:58:54 -0700
Subject: [PATCH 14/41] `token.RemainingLife()` will now accurately return the
time remaining for refresh tokens.
Export: 76252f4586032f43aaac32a0737303943108c139
---
auth/oidc.go | 25 ++++++++++++++++++-------
auth/token/token.go | 9 ++++++++-
auth/token/token_test.go | 38 ++++++++++++++++++++++++++++++++++++--
3 files changed, 62 insertions(+), 10 deletions(-)
diff --git a/auth/oidc.go b/auth/oidc.go
index 29cc2872..295e1dc6 100644
--- a/auth/oidc.go
+++ b/auth/oidc.go
@@ -130,19 +130,30 @@ func ExtractIssuerAndSubject(token string) (string, string, error) {
return NormalizeIssuer(payload.Issuer), payload.Subject, nil
}
-func ExtractExpiry(token string) (time.Time, error) {
- raw, err := decodeToken(token)
- if err != nil {
- return time.Time{}, err
- }
-
+func extractExpiry(rawToken []byte) (time.Time, error) {
var payload struct {
Expiry int64 `json:"exp"`
}
- if err := json.Unmarshal(raw, &payload); err != nil {
+ if err := json.Unmarshal(rawToken, &payload); err != nil {
return time.Time{}, fmt.Errorf("oidc: failed to unmarshal claims: %w", err)
}
return time.Unix(payload.Expiry, 0), nil
}
+
+func ExtractExpiry(token string) (time.Time, error) {
+ raw, err := decodeToken(token)
+ if err != nil {
+ return time.Time{}, err
+ }
+ return extractExpiry(raw)
+}
+
+func ExtractRefreshExpiry(token string) (time.Time, error) {
+ raw, err := base64.StdEncoding.DecodeString(token)
+ if err != nil {
+ return time.Time{}, fmt.Errorf("refresh: malformed jwt payload: %w", err)
+ }
+ return extractExpiry(raw)
+}
diff --git a/auth/token/token.go b/auth/token/token.go
index 485e6c99..d1991926 100644
--- a/auth/token/token.go
+++ b/auth/token/token.go
@@ -135,8 +135,15 @@ func RemainingLife(kind Kind, audience string, less time.Duration) time.Duration
// Not a big deal, life is zero.
return 0
}
- expiry, err := auth.ExtractExpiry(string(tok))
+ var expiry time.Time
+ switch kind {
+ case KindRefresh:
+ expiry, err = auth.ExtractRefreshExpiry(string(tok))
+ default:
+ expiry, err = auth.ExtractExpiry(string(tok))
+ }
if err != nil {
+ fmt.Printf("failed to extract expiry: %v\n", err)
// Not a big deal, life is zero.
return 0
}
diff --git a/auth/token/token_test.go b/auth/token/token_test.go
index a263c9ea..b414d239 100644
--- a/auth/token/token_test.go
+++ b/auth/token/token_test.go
@@ -6,6 +6,8 @@ SPDX-License-Identifier: Apache-2.0
package token
import (
+ "encoding/base64"
+ "encoding/json"
"os"
"path/filepath"
"strings"
@@ -23,7 +25,6 @@ func testToken(t *testing.T, audience, subject string, issuedAt time.Time, valid
signer, iss := oidctest.NewIssuer(t)
- // Create an OIDC token using this issuer's signer.
tok, err := jwt.Signed(signer).Claims(jwt.Claims{
Issuer: iss,
IssuedAt: jwt.NewNumericDate(issuedAt),
@@ -38,6 +39,23 @@ func testToken(t *testing.T, audience, subject string, issuedAt time.Time, valid
return tok
}
+func testRefreshToken(t *testing.T, issuer, audience, subject string, issuedAt time.Time, validDur time.Duration) string {
+ t.Helper()
+
+ msg := jwt.Claims{
+ Issuer: issuer,
+ Subject: subject,
+ Audience: jwt.Audience{audience},
+ IssuedAt: jwt.NewNumericDate(issuedAt),
+ Expiry: jwt.NewNumericDate(issuedAt.Add(validDur)),
+ }
+
+ bs, _ := json.Marshal(msg)
+ code := base64.StdEncoding.EncodeToString(bs)
+
+ return code
+}
+
func TestSave(t *testing.T) {
t.Setenv("HOME", t.TempDir())
cacheDir, err := os.UserCacheDir()
@@ -396,6 +414,17 @@ func TestRemainingLife(t *testing.T) {
audience: "audience",
less: 30 * time.Minute,
want: 0,
+ }, {
+ name: "exists less 30m, 0s remain (refresh)",
+ token: ts{
+ audience: "audience",
+ subject: "subject",
+ duration: 30 * time.Minute,
+ },
+ kind: KindRefresh,
+ audience: "audience",
+ less: 30 * time.Minute,
+ want: 0,
}, {
name: "exists less 40m, 0s remain",
token: ts{
@@ -422,7 +451,12 @@ func TestRemainingLife(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- tok := testToken(t, test.token.audience, test.token.subject, now, test.token.duration)
+ var tok string
+ if test.kind == KindAccess {
+ tok = testToken(t, test.token.audience, test.token.subject, now, test.token.duration)
+ } else {
+ tok = testRefreshToken(t, "https://issuer.unit-test.com", test.token.audience, test.token.subject, now, test.token.duration)
+ }
if err := Save([]byte(tok), test.kind, test.token.audience); err != nil {
t.Fatalf("Save() unexpected error=%v", err)
}
From 19a111107b77e07a1b243b0e3c8a84e2c66a25fa Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Tue, 19 Mar 2024 11:26:33 -0400
Subject: [PATCH 15/41] Export 4381f699d82692a42945be465fb347a454c45ce0
Export: 4381f699d82692a42945be465fb347a454c45ce0
---
.../iam/v1/group_invites.platform.pb.go | 158 ++++++++++--------
.../iam/v1/group_invites.platform.proto | 3 +
2 files changed, 88 insertions(+), 73 deletions(-)
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
index f7ce620d..bf53afb4 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -203,6 +203,9 @@ type StoredGroupInvite struct {
KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
// role is the role the invited identity will be role-bound to the group with.
Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
+ // email is the email address that is allowed to accept this invite code. If blank,
+ // anyone with the invite code an accept.
+ Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
}
func (x *StoredGroupInvite) Reset() {
@@ -265,6 +268,13 @@ func (x *StoredGroupInvite) GetRole() *Role {
return nil
}
+func (x *StoredGroupInvite) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
type GroupInviteList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -654,7 +664,7 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xa9, 0x01,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xbf, 0x01,
0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
@@ -665,80 +675,82 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
- 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
- 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x89,
- 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c,
- 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50,
- 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79,
- 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64,
- 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22,
- 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39,
- 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
- 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63,
+ 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61,
+ 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22,
+ 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72,
+ 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d,
+ 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
+ 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a,
+ 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+ 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03,
+ 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12,
+ 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a,
+ 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70,
+ 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22,
- 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10,
- 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74,
- 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76,
- 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01,
- 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15,
+ 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb,
+ 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
+ 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
+ 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76,
+ 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+ 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
+ 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
diff --git a/proto/platform/iam/v1/group_invites.platform.proto b/proto/platform/iam/v1/group_invites.platform.proto
index f3234539..cab17170 100644
--- a/proto/platform/iam/v1/group_invites.platform.proto
+++ b/proto/platform/iam/v1/group_invites.platform.proto
@@ -133,6 +133,9 @@ message StoredGroupInvite {
string key_id = 3;
// role is the role the invited identity will be role-bound to the group with.
chainguard.platform.iam.Role role = 4;
+ // email is the email address that is allowed to accept this invite code. If blank,
+ // anyone with the invite code an accept.
+ string email = 5;
}
message GroupInviteList {
From 7f58b9f3c3f027fc38ec8638d5446d7f049223a1 Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Wed, 20 Mar 2024 16:56:40 -0400
Subject: [PATCH 16/41] Export ce521e6653083bfa5591dc16334a7111af32476d
Export: ce521e6653083bfa5591dc16334a7111af32476d
---
.../iam/v1/group_invites.platform.pb.go | 193 ++++++++++--------
.../iam/v1/group_invites.platform.proto | 2 +
2 files changed, 105 insertions(+), 90 deletions(-)
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
index bf53afb4..9993a303 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -206,6 +206,8 @@ type StoredGroupInvite struct {
// email is the email address that is allowed to accept this invite code. If blank,
// anyone with the invite code an accept.
Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
+ // created_at is the timestamp for when the invite was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
}
func (x *StoredGroupInvite) Reset() {
@@ -275,6 +277,13 @@ func (x *StoredGroupInvite) GetEmail() string {
return ""
}
+func (x *StoredGroupInvite) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
type GroupInviteList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -664,7 +673,7 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xbf, 0x01,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xfa, 0x01,
0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
@@ -676,81 +685,84 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61,
- 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22,
- 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72,
- 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
- 0x05, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d,
- 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
- 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a,
- 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
- 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03,
- 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12,
- 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a,
- 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74,
- 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63,
+ 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12,
+ 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb,
- 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc,
- 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
- 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76,
- 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
- 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
+ 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0x89, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74,
+ 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x32, 0x0a, 0x18, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22,
+ 0x50, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65,
+ 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49,
+ 0x64, 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61,
+ 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
+ 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+ 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x22, 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03,
+ 0x10, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73,
+ 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5,
+ 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
+ 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69,
+ 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69,
+ 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -788,21 +800,22 @@ var file_group_invites_platform_proto_depIdxs = []int32{
10, // 3: chainguard.platform.iam.GroupInvite.role:type_name -> chainguard.platform.iam.Role
9, // 4: chainguard.platform.iam.StoredGroupInvite.expiration:type_name -> google.protobuf.Timestamp
10, // 5: chainguard.platform.iam.StoredGroupInvite.role:type_name -> chainguard.platform.iam.Role
- 2, // 6: chainguard.platform.iam.GroupInviteList.items:type_name -> chainguard.platform.iam.StoredGroupInvite
- 11, // 7: chainguard.platform.iam.GroupInviteRequest.ttl:type_name -> google.protobuf.Duration
- 4, // 8: chainguard.platform.iam.GroupInvites.Create:input_type -> chainguard.platform.iam.GroupInviteRequest
- 4, // 9: chainguard.platform.iam.GroupInvites.CreateWithGroup:input_type -> chainguard.platform.iam.GroupInviteRequest
- 6, // 10: chainguard.platform.iam.GroupInvites.List:input_type -> chainguard.platform.iam.GroupInviteFilter
- 5, // 11: chainguard.platform.iam.GroupInvites.Delete:input_type -> chainguard.platform.iam.DeleteGroupInviteRequest
- 1, // 12: chainguard.platform.iam.GroupInvites.Create:output_type -> chainguard.platform.iam.GroupInvite
- 1, // 13: chainguard.platform.iam.GroupInvites.CreateWithGroup:output_type -> chainguard.platform.iam.GroupInvite
- 3, // 14: chainguard.platform.iam.GroupInvites.List:output_type -> chainguard.platform.iam.GroupInviteList
- 12, // 15: chainguard.platform.iam.GroupInvites.Delete:output_type -> google.protobuf.Empty
- 12, // [12:16] is the sub-list for method output_type
- 8, // [8:12] 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
+ 9, // 6: chainguard.platform.iam.StoredGroupInvite.created_at:type_name -> google.protobuf.Timestamp
+ 2, // 7: chainguard.platform.iam.GroupInviteList.items:type_name -> chainguard.platform.iam.StoredGroupInvite
+ 11, // 8: chainguard.platform.iam.GroupInviteRequest.ttl:type_name -> google.protobuf.Duration
+ 4, // 9: chainguard.platform.iam.GroupInvites.Create:input_type -> chainguard.platform.iam.GroupInviteRequest
+ 4, // 10: chainguard.platform.iam.GroupInvites.CreateWithGroup:input_type -> chainguard.platform.iam.GroupInviteRequest
+ 6, // 11: chainguard.platform.iam.GroupInvites.List:input_type -> chainguard.platform.iam.GroupInviteFilter
+ 5, // 12: chainguard.platform.iam.GroupInvites.Delete:input_type -> chainguard.platform.iam.DeleteGroupInviteRequest
+ 1, // 13: chainguard.platform.iam.GroupInvites.Create:output_type -> chainguard.platform.iam.GroupInvite
+ 1, // 14: chainguard.platform.iam.GroupInvites.CreateWithGroup:output_type -> chainguard.platform.iam.GroupInvite
+ 3, // 15: chainguard.platform.iam.GroupInvites.List:output_type -> chainguard.platform.iam.GroupInviteList
+ 12, // 16: chainguard.platform.iam.GroupInvites.Delete:output_type -> google.protobuf.Empty
+ 13, // [13:17] is the sub-list for method output_type
+ 9, // [9:13] 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_group_invites_platform_proto_init() }
diff --git a/proto/platform/iam/v1/group_invites.platform.proto b/proto/platform/iam/v1/group_invites.platform.proto
index cab17170..14c162c1 100644
--- a/proto/platform/iam/v1/group_invites.platform.proto
+++ b/proto/platform/iam/v1/group_invites.platform.proto
@@ -136,6 +136,8 @@ message StoredGroupInvite {
// email is the email address that is allowed to accept this invite code. If blank,
// anyone with the invite code an accept.
string email = 5;
+ // created_at is the timestamp for when the invite was created.
+ google.protobuf.Timestamp created_at = 6;
}
message GroupInviteList {
From f7e7b4f6f86a8751754908654272eb605443f206 Mon Sep 17 00:00:00 2001
From: Jason Hall
Date: Thu, 21 Mar 2024 08:44:38 -0400
Subject: [PATCH 17/41] Export 6f85d0d482f340af0a987a5ccbdc39bf0c97edb8
Export: 6f85d0d482f340af0a987a5ccbdc39bf0c97edb8
---
proto/annotations/doc.go | 4 ++--
proto/capabilities/doc.go | 2 +-
.../advisory/v1/advisory.platform.pb.gw.go | 5 -----
proto/platform/advisory/v1/doc.go | 2 +-
proto/platform/auth/v1/auth.platform.pb.gw.go | 5 -----
proto/platform/auth/v1/doc.go | 2 +-
proto/platform/common/v1/doc.go | 2 +-
proto/platform/events/v1/doc.go | 4 ++--
.../events/v1/identities.platform.pb.gw.go | 5 -----
.../events/v1/subscriptions.platform.pb.gw.go | 5 -----
.../v1/account_associations.platform.pb.gw.go | 5 -----
proto/platform/iam/v1/doc.go | 18 +++++++++---------
proto/platform/iam/v1/group.platform.pb.gw.go | 5 -----
.../iam/v1/group_invites.platform.pb.gw.go | 5 -----
.../platform/iam/v1/identity.platform.pb.gw.go | 5 -----
.../v1/identity_providers.platform.pb.gw.go | 5 -----
.../platform/iam/v1/policies.platform.pb.gw.go | 5 -----
proto/platform/iam/v1/role.platform.pb.gw.go | 5 -----
.../iam/v1/role_binding.platform.pb.gw.go | 5 -----
.../platform/iam/v1/sigstore.platform.pb.gw.go | 5 -----
proto/platform/oidc/v1/doc.go | 2 +-
proto/platform/oidc/v1/oidc.platform.pb.gw.go | 5 -----
proto/platform/ping/v1/doc.go | 2 +-
proto/platform/ping/v1/ping.platform.pb.gw.go | 5 -----
proto/platform/registry/v1/doc.go | 2 +-
.../registry/v1/registry.platform.pb.gw.go | 5 -----
.../tenant/v1/attestation.platform.pb.gw.go | 5 -----
.../tenant/v1/cluster.platform.pb.gw.go | 5 -----
proto/platform/tenant/v1/doc.go | 12 ++++++------
.../tenant/v1/record.platform.pb.gw.go | 5 -----
.../platform/tenant/v1/risk.platform.pb.gw.go | 5 -----
.../platform/tenant/v1/sbom.platform.pb.gw.go | 5 -----
.../platform/tenant/v1/vuln.platform.pb.gw.go | 5 -----
33 files changed, 26 insertions(+), 136 deletions(-)
diff --git a/proto/annotations/doc.go b/proto/annotations/doc.go
index 3c5444ee..705d5049 100644
--- a/proto/annotations/doc.go
+++ b/proto/annotations/doc.go
@@ -6,6 +6,6 @@ SPDX-License-Identifier: Apache-2.0
// Package accounts contains the GRPC client and server definitions
// for implementing Auth interactions for the Console.
//
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. auth.proto
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. events.proto
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. auth.proto
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. events.proto
package annotations
diff --git a/proto/capabilities/doc.go b/proto/capabilities/doc.go
index 5765d5b9..ef8a1f50 100644
--- a/proto/capabilities/doc.go
+++ b/proto/capabilities/doc.go
@@ -5,5 +5,5 @@ SPDX-License-Identifier: Apache-2.0
// Package capabilities contains the proto enum with our IAM capabilities.
//
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. capabilities.proto
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. capabilities.proto
package capabilities
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.gw.go b/proto/platform/advisory/v1/advisory.platform.pb.gw.go
index a6d9166b..11cb9e4c 100644
--- a/proto/platform/advisory/v1/advisory.platform.pb.gw.go
+++ b/proto/platform/advisory/v1/advisory.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: advisory.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/advisory/v1/doc.go b/proto/platform/advisory/v1/doc.go
index df562690..2692c77e 100644
--- a/proto/platform/advisory/v1/doc.go
+++ b/proto/platform/advisory/v1/doc.go
@@ -6,5 +6,5 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Advisory interactions.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. advisory.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. advisory.platform.proto
package v1
diff --git a/proto/platform/auth/v1/auth.platform.pb.gw.go b/proto/platform/auth/v1/auth.platform.pb.gw.go
index 0257f6a2..8aaefdda 100644
--- a/proto/platform/auth/v1/auth.platform.pb.gw.go
+++ b/proto/platform/auth/v1/auth.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: auth.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/auth/v1/doc.go b/proto/platform/auth/v1/doc.go
index 409f9974..c7008077 100644
--- a/proto/platform/auth/v1/doc.go
+++ b/proto/platform/auth/v1/doc.go
@@ -6,5 +6,5 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Auth interactions for the Console.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. auth.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. auth.platform.proto
package v1
diff --git a/proto/platform/common/v1/doc.go b/proto/platform/common/v1/doc.go
index 96d90e89..9c741dd3 100644
--- a/proto/platform/common/v1/doc.go
+++ b/proto/platform/common/v1/doc.go
@@ -3,7 +3,7 @@ Copyright 2022 Chainguard, Inc.
SPDX-License-Identifier: Apache-2.0
*/
-//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. uidp.platform.proto
+//go:generate protoc -I . -I .. -I ../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. uidp.platform.proto
// Package common contains Chainguard shared types exposed to the console.
package v1
diff --git a/proto/platform/events/v1/doc.go b/proto/platform/events/v1/doc.go
index 8e031d9d..a8543a27 100644
--- a/proto/platform/events/v1/doc.go
+++ b/proto/platform/events/v1/doc.go
@@ -4,8 +4,8 @@ SPDX-License-Identifier: Apache-2.0
*/
// Generate the proto definitions
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. subscriptions.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identities.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. subscriptions.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identities.platform.proto
// Package events contains the GRPC client and server definitions
// for implementing eventing interactions for the Console.
diff --git a/proto/platform/events/v1/identities.platform.pb.gw.go b/proto/platform/events/v1/identities.platform.pb.gw.go
index e20b6a68..fde3a8c0 100644
--- a/proto/platform/events/v1/identities.platform.pb.gw.go
+++ b/proto/platform/events/v1/identities.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: identities.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.gw.go b/proto/platform/events/v1/subscriptions.platform.pb.gw.go
index 6fa11eee..5e69dba2 100644
--- a/proto/platform/events/v1/subscriptions.platform.pb.gw.go
+++ b/proto/platform/events/v1/subscriptions.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: subscriptions.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.gw.go b/proto/platform/iam/v1/account_associations.platform.pb.gw.go
index 090915e1..5f1a7325 100644
--- a/proto/platform/iam/v1/account_associations.platform.pb.gw.go
+++ b/proto/platform/iam/v1/account_associations.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: account_associations.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/doc.go b/proto/platform/iam/v1/doc.go
index 413894e6..2dbc0d23 100644
--- a/proto/platform/iam/v1/doc.go
+++ b/proto/platform/iam/v1/doc.go
@@ -4,15 +4,15 @@ SPDX-License-Identifier: Apache-2.0
*/
// Generate the proto definitions
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. group.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. group_invites.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. role.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. role_binding.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identity.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. account_associations.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. policies.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. identity_providers.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. sigstore.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. group.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. group_invites.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. role.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. role_binding.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. account_associations.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. policies.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity_providers.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sigstore.platform.proto
// Package v1 contains the v1 GRPC client and server definitions
// for implementing IAM interactions for the Console.
diff --git a/proto/platform/iam/v1/group.platform.pb.gw.go b/proto/platform/iam/v1/group.platform.pb.gw.go
index 7152a1c9..5e56d640 100644
--- a/proto/platform/iam/v1/group.platform.pb.gw.go
+++ b/proto/platform/iam/v1/group.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: group.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.gw.go b/proto/platform/iam/v1/group_invites.platform.pb.gw.go
index d1994fca..d1e9d95c 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.gw.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: group_invites.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/identity.platform.pb.gw.go b/proto/platform/iam/v1/identity.platform.pb.gw.go
index 78f1d948..903a93bf 100644
--- a/proto/platform/iam/v1/identity.platform.pb.gw.go
+++ b/proto/platform/iam/v1/identity.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: identity.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.gw.go b/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
index 6ac2c190..fdfb2ada 100644
--- a/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
+++ b/proto/platform/iam/v1/identity_providers.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: identity_providers.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/policies.platform.pb.gw.go b/proto/platform/iam/v1/policies.platform.pb.gw.go
index 2ac936c3..f741781f 100644
--- a/proto/platform/iam/v1/policies.platform.pb.gw.go
+++ b/proto/platform/iam/v1/policies.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: policies.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/role.platform.pb.gw.go b/proto/platform/iam/v1/role.platform.pb.gw.go
index b4bb5afa..dcc83137 100644
--- a/proto/platform/iam/v1/role.platform.pb.gw.go
+++ b/proto/platform/iam/v1/role.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: role.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.gw.go b/proto/platform/iam/v1/role_binding.platform.pb.gw.go
index 8d673504..a50a2575 100644
--- a/proto/platform/iam/v1/role_binding.platform.pb.gw.go
+++ b/proto/platform/iam/v1/role_binding.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: role_binding.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.gw.go b/proto/platform/iam/v1/sigstore.platform.pb.gw.go
index b61fd0e2..db3145ae 100644
--- a/proto/platform/iam/v1/sigstore.platform.pb.gw.go
+++ b/proto/platform/iam/v1/sigstore.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: sigstore.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/oidc/v1/doc.go b/proto/platform/oidc/v1/doc.go
index 93693c42..e3a2e450 100644
--- a/proto/platform/oidc/v1/doc.go
+++ b/proto/platform/oidc/v1/doc.go
@@ -6,5 +6,5 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing OIDC interactions for the Platform.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. oidc.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. oidc.platform.proto
package v1
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.gw.go b/proto/platform/oidc/v1/oidc.platform.pb.gw.go
index fc3d42cf..e3e6dd52 100644
--- a/proto/platform/oidc/v1/oidc.platform.pb.gw.go
+++ b/proto/platform/oidc/v1/oidc.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: oidc.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/ping/v1/doc.go b/proto/platform/ping/v1/doc.go
index 598bbb48..4e6c5d67 100644
--- a/proto/platform/ping/v1/doc.go
+++ b/proto/platform/ping/v1/doc.go
@@ -6,5 +6,5 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing ping interactions for the Platform.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. ping.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. ping.platform.proto
package v1
diff --git a/proto/platform/ping/v1/ping.platform.pb.gw.go b/proto/platform/ping/v1/ping.platform.pb.gw.go
index c934acab..d906d932 100644
--- a/proto/platform/ping/v1/ping.platform.pb.gw.go
+++ b/proto/platform/ping/v1/ping.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: ping.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/registry/v1/doc.go b/proto/platform/registry/v1/doc.go
index 006b05d9..d7b8247f 100644
--- a/proto/platform/registry/v1/doc.go
+++ b/proto/platform/registry/v1/doc.go
@@ -6,5 +6,5 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Registry interactions.
//
-//go:generate protoc -I . -I ../.. -I ../../.. -I ../../tenant/v1 --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. registry.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. -I ../../tenant/v1 --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. registry.platform.proto
package v1
diff --git a/proto/platform/registry/v1/registry.platform.pb.gw.go b/proto/platform/registry/v1/registry.platform.pb.gw.go
index 4789185d..190731c4 100644
--- a/proto/platform/registry/v1/registry.platform.pb.gw.go
+++ b/proto/platform/registry/v1/registry.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: registry.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.gw.go b/proto/platform/tenant/v1/attestation.platform.pb.gw.go
index 38db96d2..459d4b0b 100644
--- a/proto/platform/tenant/v1/attestation.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/attestation.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: attestation.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.gw.go b/proto/platform/tenant/v1/cluster.platform.pb.gw.go
index 4355e0ab..dc3d0b60 100644
--- a/proto/platform/tenant/v1/cluster.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/cluster.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: cluster.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
index 9441336f..146b7989 100644
--- a/proto/platform/tenant/v1/doc.go
+++ b/proto/platform/tenant/v1/doc.go
@@ -6,16 +6,16 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Tenant interactions for the Console.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. cluster.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. cluster.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative context.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative node.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative namespace.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative policy_results.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative workload.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. record.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. risk.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. sbom.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. vuln.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --openapiv2_out=. attestation.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. record.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. risk.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. vuln.platform.proto
+//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. attestation.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/record.platform.pb.gw.go b/proto/platform/tenant/v1/record.platform.pb.gw.go
index ee0f69c1..043b5665 100644
--- a/proto/platform/tenant/v1/record.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/record.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: record.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/risk.platform.pb.gw.go b/proto/platform/tenant/v1/risk.platform.pb.gw.go
index 26acbe14..209d9c3b 100644
--- a/proto/platform/tenant/v1/risk.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/risk.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: risk.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.gw.go b/proto/platform/tenant/v1/sbom.platform.pb.gw.go
index 9b2cab72..f807c51b 100644
--- a/proto/platform/tenant/v1/sbom.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/sbom.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: sbom.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.gw.go b/proto/platform/tenant/v1/vuln.platform.pb.gw.go
index 617e95a6..9f610158 100644
--- a/proto/platform/tenant/v1/vuln.platform.pb.gw.go
+++ b/proto/platform/tenant/v1/vuln.platform.pb.gw.go
@@ -1,11 +1,6 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: vuln.platform.proto
-/*
-Package v1 is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
package v1
import (
From f6af9b8e7175afadc1fcc3ac3ef79954d192faa7 Mon Sep 17 00:00:00 2001
From: Colin Douglas <16968564+cmdpdx@users.noreply.github.com>
Date: Thu, 28 Mar 2024 09:38:02 -0700
Subject: [PATCH 18/41] Annotate connection failure errors from `NewClients`
functions with client type to aid troubleshooting.
Export: e58ba0132faa1618558d68f2a1b9db54747e1640
---
proto/platform/advisory/v1/clients.go | 2 +-
proto/platform/clients.go | 4 ++--
proto/platform/iam/v1/clients.go | 2 +-
proto/platform/oidc/v1/clients.go | 2 +-
proto/platform/ping/v1/clients.go | 2 +-
proto/platform/registry/v1/clients.go | 2 +-
6 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/proto/platform/advisory/v1/clients.go b/proto/platform/advisory/v1/clients.go
index cdabef5b..124dd007 100644
--- a/proto/platform/advisory/v1/clients.go
+++ b/proto/platform/advisory/v1/clients.go
@@ -46,7 +46,7 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("advisory.NewClients: failed to connect to the iam server: %w", err)
}
return &clients{
diff --git a/proto/platform/clients.go b/proto/platform/clients.go
index 8241bba2..ad4f0736 100644
--- a/proto/platform/clients.go
+++ b/proto/platform/clients.go
@@ -62,7 +62,7 @@ func NewPlatformClients(ctx context.Context, apiURL string, cred credentials.Per
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("NewPlatformClients: failed to connect to the iam server: %w", err)
}
return &clients{
@@ -142,7 +142,7 @@ func NewOIDCClients(ctx context.Context, issuerURL string, cred credentials.PerR
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the OIDC issuer: %w", err)
+ return nil, fmt.Errorf("NewOIDCClients: failed to connect to the OIDC issuer: %w", err)
}
return &oidcClients{
diff --git a/proto/platform/iam/v1/clients.go b/proto/platform/iam/v1/clients.go
index 1e1986c7..d1df1337 100644
--- a/proto/platform/iam/v1/clients.go
+++ b/proto/platform/iam/v1/clients.go
@@ -62,7 +62,7 @@ func NewClients(ctx context.Context, iamURL string, token string) (Clients, erro
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("iam.NewClients: failed to connect to the iam server: %w", err)
}
return &clients{
diff --git a/proto/platform/oidc/v1/clients.go b/proto/platform/oidc/v1/clients.go
index 61058163..2e727281 100644
--- a/proto/platform/oidc/v1/clients.go
+++ b/proto/platform/oidc/v1/clients.go
@@ -66,7 +66,7 @@ func NewClients(ctx context.Context, addr string, token string, opts ...ClientOp
}
conn, err := grpc.DialContext(ctx, target, rpcOpts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("oidc.NewClients: failed to connect to the iam server: %w", err)
}
return &clients{
diff --git a/proto/platform/ping/v1/clients.go b/proto/platform/ping/v1/clients.go
index 2f775fcf..c686bbc7 100644
--- a/proto/platform/ping/v1/clients.go
+++ b/proto/platform/ping/v1/clients.go
@@ -46,7 +46,7 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("ping.NewClients: failed to connect to the iam server: %w", err)
}
return &clients{
diff --git a/proto/platform/registry/v1/clients.go b/proto/platform/registry/v1/clients.go
index a52a2861..4b892a88 100644
--- a/proto/platform/registry/v1/clients.go
+++ b/proto/platform/registry/v1/clients.go
@@ -46,7 +46,7 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
conn, err := grpc.DialContext(ctx, target, opts...)
if err != nil {
- return nil, fmt.Errorf("failed to connect to the iam server: %w", err)
+ return nil, fmt.Errorf("registry.NewClients: failed to connect to the iam server: %w", err)
}
return &clients{
From 7883747478841e275a6afb464a14a007327fe4a9 Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Fri, 29 Mar 2024 17:01:35 -0400
Subject: [PATCH 19/41] Export e2e1e9a3b1a5e062918f17752e85c3c41ee42766
Export: e2e1e9a3b1a5e062918f17752e85c3c41ee42766
---
.../iam/v1/group_invites.platform.pb.go | 164 ++++++++++--------
.../iam/v1/group_invites.platform.proto | 4 +
2 files changed, 97 insertions(+), 71 deletions(-)
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
index 9993a303..342f4663 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -208,6 +208,8 @@ type StoredGroupInvite struct {
Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
// created_at is the timestamp for when the invite was created.
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // single_use indicates whether or not the invite will be deleted after a user joins the group.
+ SingleUse bool `protobuf:"varint,7,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"`
}
func (x *StoredGroupInvite) Reset() {
@@ -284,6 +286,13 @@ func (x *StoredGroupInvite) GetCreatedAt() *timestamppb.Timestamp {
return nil
}
+func (x *StoredGroupInvite) GetSingleUse() bool {
+ if x != nil {
+ return x.SingleUse
+ }
+ return false
+}
+
type GroupInviteList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -344,6 +353,8 @@ type GroupInviteRequest struct {
Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
// email is the exact email address that may accept this invite code, if specified.
Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"`
+ // if single_use is set to true, then the invite will be deleted after a user joins the group.
+ SingleUse bool `protobuf:"varint,5,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"`
}
func (x *GroupInviteRequest) Reset() {
@@ -406,6 +417,13 @@ func (x *GroupInviteRequest) GetEmail() string {
return ""
}
+func (x *GroupInviteRequest) GetSingleUse() bool {
+ if x != nil {
+ return x.SingleUse
+ }
+ return false
+}
+
type DeleteGroupInviteRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -673,7 +691,7 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xfa, 0x01,
+ 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x99, 0x02,
0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
@@ -689,80 +707,84 @@ var file_group_invites_platform_proto_rawDesc = []byte{
0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
- 0x89, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74,
- 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x32, 0x0a, 0x18, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22,
- 0x50, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65,
- 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49,
- 0x64, 0x32, 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b,
- 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
- 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x22, 0x10, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03,
- 0x10, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68,
+ 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69,
+ 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
+ 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x22, 0x53, 0x0a, 0x0f, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa8,
+ 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c,
+ 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69,
+ 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
+ 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a,
+ 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x32,
+ 0xb2, 0x05, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
+ 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
- 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73,
- 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x78,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f,
0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5,
- 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a,
+ 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x76, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x10,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0xc9, 0x01, 0x91, 0x03, 0x10, 0x01,
+ 0x12, 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69,
- 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69,
- 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcb, 0x01, 0x10, 0x01, 0x12, 0xc5, 0x01, 0x0a,
+ 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
+ 0x74, 0x79, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xcc, 0x01, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
+ 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/proto/platform/iam/v1/group_invites.platform.proto b/proto/platform/iam/v1/group_invites.platform.proto
index 14c162c1..c7f6ae8a 100644
--- a/proto/platform/iam/v1/group_invites.platform.proto
+++ b/proto/platform/iam/v1/group_invites.platform.proto
@@ -138,6 +138,8 @@ message StoredGroupInvite {
string email = 5;
// created_at is the timestamp for when the invite was created.
google.protobuf.Timestamp created_at = 6;
+ // single_use indicates whether or not the invite will be deleted after a user joins the group.
+ bool single_use = 7;
}
message GroupInviteList {
@@ -153,6 +155,8 @@ message GroupInviteRequest {
string role = 3;
// email is the exact email address that may accept this invite code, if specified.
string email = 4;
+ // if single_use is set to true, then the invite will be deleted after a user joins the group.
+ bool single_use = 5;
}
message DeleteGroupInviteRequest {
From 04e3c4052ae19d4807ab322b9f209cb50bbd2102 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 11 Apr 2024 09:42:36 -0700
Subject: [PATCH 20/41] Export b725cafefbc51003a6f05b812bf33922bba6dab9
Export: b725cafefbc51003a6f05b812bf33922bba6dab9
---
go.mod | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/go.mod b/go.mod
index 3fc84f0c..dd377c12 100644
--- a/go.mod
+++ b/go.mod
@@ -2,7 +2,7 @@ module chainguard.dev/sdk
go 1.21.2
-toolchain go1.21.5
+toolchain go1.22.2
require (
chainguard.dev/go-grpc-kit v0.17.2
From bb00569ff3e66e0224cdc0411546d93c8eabb14e Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 11 Apr 2024 15:12:15 -0700
Subject: [PATCH 21/41] Export 5c7e6ebe6bd648c5c36608d22c6d3e1feaadae5d
Export: 5c7e6ebe6bd648c5c36608d22c6d3e1feaadae5d
---
auth/token/token_test.go | 2 +-
go.mod | 137 +++++++++--------
go.sum | 310 ++++++++++++++++++---------------------
3 files changed, 213 insertions(+), 236 deletions(-)
diff --git a/auth/token/token_test.go b/auth/token/token_test.go
index b414d239..6a078fea 100644
--- a/auth/token/token_test.go
+++ b/auth/token/token_test.go
@@ -14,8 +14,8 @@ import (
"testing"
"time"
+ "github.com/go-jose/go-jose/v3/jwt"
"github.com/google/go-cmp/cmp"
- "gopkg.in/square/go-jose.v2/jwt"
"chainguard.dev/go-oidctest/pkg/oidctest"
)
diff --git a/go.mod b/go.mod
index dd377c12..d4bf5dfa 100644
--- a/go.mod
+++ b/go.mod
@@ -1,31 +1,29 @@
module chainguard.dev/sdk
-go 1.21.2
-
-toolchain go1.22.2
+go 1.22.2
require (
chainguard.dev/go-grpc-kit v0.17.2
- chainguard.dev/go-oidctest v0.2.0
- github.com/aws/aws-sdk-go-v2 v1.24.1
+ chainguard.dev/go-oidctest v0.3.1
+ github.com/aws/aws-sdk-go-v2 v1.26.0
github.com/bits-and-blooms/bitset v1.13.0
github.com/chainguard-dev/clog v1.3.1
github.com/cloudevents/sdk-go/v2 v2.15.2
- github.com/coreos/go-oidc/v3 v3.9.0
+ github.com/coreos/go-oidc/v3 v3.10.0
+ github.com/go-jose/go-jose/v3 v3.0.3
github.com/google/go-cmp v0.6.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1
github.com/microcosm-cc/bluemonday v1.0.26
- github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
+ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/russross/blackfriday/v2 v2.1.0
github.com/sigstore/policy-controller v0.8.4
- go.uber.org/zap v1.26.0
+ go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
- golang.org/x/oauth2 v0.17.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe
- google.golang.org/grpc v1.61.1
+ golang.org/x/oauth2 v0.19.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7
+ google.golang.org/grpc v1.62.1
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
google.golang.org/protobuf v1.33.0
- gopkg.in/square/go-jose.v2 v2.6.0
k8s.io/api v0.29.1
k8s.io/apimachinery v0.29.1
knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845
@@ -33,30 +31,30 @@ require (
)
require (
- cloud.google.com/go/compute v1.23.3 // indirect
+ cloud.google.com/go/compute v1.25.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.5 // indirect
- cloud.google.com/go/kms v1.15.5 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 // indirect
+ cloud.google.com/go/iam v1.1.6 // indirect
+ cloud.google.com/go/kms v1.15.8 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 // indirect
- github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect
- github.com/aws/aws-sdk-go v1.50.1 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.26.6 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 // indirect
- github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 // indirect
- github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect
- github.com/aws/smithy-go v1.19.0 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+ github.com/aws/aws-sdk-go v1.51.6 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.27.9 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.17.9 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 // indirect
+ github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 // indirect
+ github.com/aws/smithy-go v1.20.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blendle/zapdriver v1.3.1 // indirect
@@ -65,21 +63,22 @@ require (
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/evanphx/json-patch/v5 v5.7.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/go-jose/go-jose/v3 v3.0.3 // indirect
- github.com/go-logr/logr v1.3.0 // indirect
+ github.com/go-jose/go-jose/v4 v4.0.1 // indirect
+ github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
+ github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
- github.com/google/go-containerregistry v0.18.0 // indirect
+ github.com/google/go-containerregistry v0.19.1 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
- github.com/google/uuid v1.5.0 // indirect
+ github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.3 // indirect
github.com/gorilla/css v1.0.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
@@ -92,63 +91,61 @@ require (
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
github.com/hashicorp/go-sockaddr v1.0.6 // indirect
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
- github.com/hashicorp/vault/api v1.10.0 // indirect
+ github.com/hashicorp/vault/api v1.12.2 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jellydator/ttlcache/v3 v3.1.1 // indirect
+ github.com/jellydator/ttlcache/v3 v3.2.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kelseyhightower/envconfig v1.4.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect
- github.com/mattn/go-colorable v0.1.9 // indirect
- github.com/mattn/go-isatty v0.0.17 // indirect
- github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/prometheus/client_golang v1.17.0 // indirect
- github.com/prometheus/client_model v0.5.0 // indirect
- github.com/prometheus/common v0.45.0 // indirect
+ github.com/prometheus/client_golang v1.19.0 // indirect
+ github.com/prometheus/client_model v0.6.0 // indirect
+ github.com/prometheus/common v0.51.1 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/ryanuber/go-glob v1.0.0 // indirect
github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect
- github.com/sigstore/sigstore v1.8.1 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 // indirect
+ github.com/sigstore/sigstore v1.8.3 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3 // indirect
+ github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3 // indirect
github.com/spf13/cobra v1.8.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
- github.com/stretchr/testify v1.9.0 // indirect
github.com/theupdateframework/go-tuf v0.7.0 // indirect
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
- go.opentelemetry.io/otel v1.21.0 // indirect
- go.opentelemetry.io/otel/metric v1.21.0 // indirect
- go.opentelemetry.io/otel/trace v1.21.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
+ go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/otel/metric v1.24.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.24.0 // indirect
+ go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.21.0 // indirect
- golang.org/x/net v0.21.0 // indirect
- golang.org/x/sync v0.6.0 // indirect
- golang.org/x/sys v0.18.0 // indirect
- golang.org/x/term v0.18.0 // indirect
+ golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/net v0.22.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
+ golang.org/x/sys v0.19.0 // indirect
+ golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.19.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/api v0.156.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect
+ google.golang.org/api v0.172.0 // indirect
+ google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/client-go v0.29.1 // indirect
- k8s.io/klog/v2 v2.110.1 // indirect
+ k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/release-utils v0.7.7 // indirect
diff --git a/go.sum b/go.sum
index 8dd78e3a..e5cfb940 100644
--- a/go.sum
+++ b/go.sum
@@ -1,61 +1,61 @@
chainguard.dev/go-grpc-kit v0.17.2 h1:WVYmCjDncj1MkEiU4qq7nIgzyqlCU+qyk0lJvTJ09bs=
chainguard.dev/go-grpc-kit v0.17.2/go.mod h1:uZTFtFzAGyVFHhJexiHbna4N5rHQU7aUXPwytlGhqz4=
-chainguard.dev/go-oidctest v0.2.0 h1:03EuCjzAjbCvIOpSA+135g51Wdefz3UgQ8OtfSFQKCI=
-chainguard.dev/go-oidctest v0.2.0/go.mod h1:1qO3asevouDqgMw4sgaVSzXqgDZQN7B6PtxLoUTzndo=
+chainguard.dev/go-oidctest v0.3.1 h1:Q1OvIVIcl+i0hqgmrXZLeDhSjtDjbnLEBASoTbhyuBY=
+chainguard.dev/go-oidctest v0.3.1/go.mod h1:TDN6MPJ6BEzWtorS9/dHzzGiaBpPRnRONv2SE0mqitU=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM=
-cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU=
-cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
-cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
+cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
+cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
+cloud.google.com/go/compute v1.25.0 h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU=
+cloud.google.com/go/compute v1.25.0/go.mod h1:GR7F0ZPZH8EhChlMo9FkLd7eUTwEymjqQagxzilIxIE=
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
-cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
-cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
-cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 h1:lGlwhPtrX6EVml1hO0ivjkUxsSyl4dsiw9qcA1k/3IQ=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1/go.mod h1:RKUqNu35KJYcVG/fqTRqmuXJZYNhYkBrnC/hX7yGbTA=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 h1:6oNBlSdi1QqM1PNW7FPA6xOGA5UNsXnkaYZz9vdPGhA=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY=
+cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
+cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
+cloud.google.com/go/kms v1.15.8 h1:szIeDCowID8th2i8XE4uRev5PMxQFqW+JjwYxL9h6xs=
+cloud.google.com/go/kms v1.15.8/go.mod h1:WoUHcDjD9pluCg7pNds131awnH429QGvRM3N/4MyoVs=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 h1:DRiANoJTiW6obBQe3SqZizkuV1PEgfiiGivmVocDy64=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0/go.mod h1:qLIye2hwb/ZouqhpSD9Zn3SJipvpEnz1Ywl3VUk9Y0s=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/aws/aws-sdk-go v1.50.1 h1:AwnLUM7TcH9vMZqA4TcDKmGfLmDW5VXwT5tPH6kXylo=
-github.com/aws/aws-sdk-go v1.50.1/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
-github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU=
-github.com/aws/aws-sdk-go-v2 v1.24.1/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
-github.com/aws/aws-sdk-go-v2/config v1.26.6 h1:Z/7w9bUqlRI0FFQpetVuFYEsjzE3h7fpU6HuGmfPL/o=
-github.com/aws/aws-sdk-go-v2/config v1.26.6/go.mod h1:uKU6cnDmYCvJ+pxO9S4cWDb2yWWIH5hra+32hVh1MI4=
-github.com/aws/aws-sdk-go-v2/credentials v1.16.16 h1:8q6Rliyv0aUFAVtzaldUEcS+T5gbadPbWdV1WcAddK8=
-github.com/aws/aws-sdk-go-v2/credentials v1.16.16/go.mod h1:UHVZrdUsv63hPXFo1H7c5fEneoVo9UXiz36QG1GEPi0=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tCKJDaHFwYEmxvlh2fAcFo8=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 h1:vF+Zgd9s+H4vOXd5BMaPWykta2a6Ih0AKLq/X6NYKn4=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10/go.mod h1:6BkRjejp/GR4411UGqkX8+wFMbFbqsUIimfK4XjOKR4=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 h1:nYPe006ktcqUji8S2mqXf9c/7NdiKriOwMvWQHgYztw=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10/go.mod h1:6UV4SZkVvmODfXKql4LCbaZUpF7HO2BX38FgBf9ZOLw=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 h1:n3GDfwqF2tzEkXlv5cuy4iy7LpKDtqDMcNLfZDu9rls=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 h1:DBYTXwIGQSGs9w4jKm60F5dmCQ3EEruxdc0MFh+3EY4=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10/go.mod h1:wohMUQiFdzo0NtxbBg0mSRGZ4vL3n0dKjLTINdcIino=
-github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 h1:W9PbZAZAEcelhhjb7KuwUtf+Lbc+i7ByYJRuWLlnxyQ=
-github.com/aws/aws-sdk-go-v2/service/kms v1.27.9/go.mod h1:2tFmR7fQnOdQlM2ZCEPpFnBIQD1U8wmXmduBgZbOag0=
-github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow=
-github.com/aws/aws-sdk-go-v2/service/sso v1.18.7/go.mod h1:+mJNDdF+qiUlNKNC3fxn74WWNN+sOiGOEImje+3ScPM=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 h1:QPMJf+Jw8E1l7zqhZmMlFw6w1NmfkfiSK8mS4zOx3BA=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7/go.mod h1:ykf3COxYI0UJmxcfcxcVuz7b6uADi1FkiUz6Eb7AgM8=
-github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0=
-github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U=
-github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
-github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
+github.com/aws/aws-sdk-go v1.51.6 h1:Ld36dn9r7P9IjU8WZSaswQ8Y/XUCRpewim5980DwYiU=
+github.com/aws/aws-sdk-go v1.51.6/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/aws/aws-sdk-go-v2 v1.26.0 h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA=
+github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I=
+github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg=
+github.com/aws/aws-sdk-go-v2/config v1.27.9/go.mod h1:dK1FQfpwpql83kbD873E9vz4FyAxuJtR22wzoXn3qq0=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.9 h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMNQVNtNdUqf6cItao=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 h1:0ScVK/4qZ8CIW0k8jOeFVsyS/sAiXpYxRBLolMkuLQM=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4/go.mod h1:84KyjNZdHC6QZW08nfHI6yZgPd+qRgaWcYsyLUo3QY8=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 h1:sHmMWWX5E7guWEFQ9SVo6A3S4xpPrWnd77a6y4WM6PU=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4/go.mod h1:WjpDrhWisWOIoS9n3nk67A3Ll1vfULJ9Kq6h29HTD48=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 h1:b+E7zIUHMmcB4Dckjpkapoy47W6C9QBv/zoUP+Hn8Kc=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6/go.mod h1:S2fNV0rxrP78NhPbCZeQgY8H9jdDMeGtwcfZIRxzBqU=
+github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 h1:yS0JkEdV6h9JOo8sy2JSpjX+i7vsKifU8SIeHrqiDhU=
+github.com/aws/aws-sdk-go-v2/service/kms v1.30.0/go.mod h1:+I8VUUSVD4p5ISQtzpgSva4I8cJ4SQ4b1dcBcof7O+g=
+github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 h1:mnbuWHOcM70/OFUlZZ5rcdfA8PflGXXiefU/O+1S3+8=
+github.com/aws/aws-sdk-go-v2/service/sso v1.20.3/go.mod h1:5HFu51Elk+4oRBZVxmHrSds5jFXmFj8C3w7DVF2gnrs=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 h1:uLq0BKatTmDzWa/Nu4WO0M1AaQDaPpwTKAeByEc6WFM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs=
+github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg=
+github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0=
+github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw=
+github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -77,12 +77,10 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101 h1:7To3pQ+pZo0i3dsWEbinPNFs5gPSBOsJtx3wTT94VBY=
-github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
-github.com/coreos/go-oidc/v3 v3.9.0 h1:0J/ogVOd4y8P0f0xUh8l9t07xRP/d8tccvjHl2dcsSo=
-github.com/coreos/go-oidc/v3 v3.9.0/go.mod h1:rTKz2PYwftcrtoCzV5g5kvfJoWcm0Mk8AF8y1iAQro4=
+github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU=
+github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -96,38 +94,38 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
-github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc=
github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
-github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
+github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U=
+github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
-github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
+github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ=
-github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=
-github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
+github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
+github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
-github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
+github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
+github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
@@ -143,8 +141,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
@@ -155,24 +151,23 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.18.0 h1:ShE7erKNPqRh5ue6Z9DUOlk04WsnFWPO6YGr3OxnfoQ=
-github.com/google/go-containerregistry v0.18.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
+github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY=
+github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
-github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
-github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
+github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA=
+github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
@@ -203,12 +198,12 @@ github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEy
github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
-github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ=
-github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8=
+github.com/hashicorp/vault/api v1.12.2 h1:7YkCTE5Ni90TcmYHDBExdt4WGJxhpzaHqR6uGbQb/rE=
+github.com/hashicorp/vault/api v1.12.2/go.mod h1:LSGf1NGT1BnvFFnKVtnvcaLBM2Lz+gJdpL6HUYed8KE=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jellydator/ttlcache/v3 v3.1.1 h1:RCgYJqo3jgvhl+fEWvjNW8thxGWsgxi+TPhRir1Y9y8=
-github.com/jellydator/ttlcache/v3 v3.1.1/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
+github.com/jellydator/ttlcache/v3 v3.2.0 h1:6lqVJ8X3ZaUwvzENqPAobDsXNExfUJd61u++uW8a3LE=
+github.com/jellydator/ttlcache/v3 v3.2.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs=
@@ -235,15 +230,11 @@ github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 h1:WGrKdjHtWC6
github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491/go.mod h1:o158RFmdEbYyIZmXAbrvmJWesbyxlLKee6X64VPVuOc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
-github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
-github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -260,8 +251,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
-github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -269,21 +260,21 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
-github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
-github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
+github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
+github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
-github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
+github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
-github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
+github.com/prometheus/common v0.51.1 h1:eIjN50Bwglz6a/c3hAgSMcofL3nD+nFQkV6Dd4DsQCw=
+github.com/prometheus/common v0.51.1/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
-github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
-github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
@@ -292,16 +283,16 @@ github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbm
github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU=
github.com/sigstore/policy-controller v0.8.4 h1:1ieS2W4GfcWfxvdE7lbfZlgW2dSnUinae2OoUM5/7Vg=
github.com/sigstore/policy-controller v0.8.4/go.mod h1:jQtLtLpcwzIuRrCtNjWLWfSQlI4ompYOU9CW5dPi6t8=
-github.com/sigstore/sigstore v1.8.1 h1:mAVposMb14oplk2h/bayPmIVdzbq2IhCgy4g6R0ZSjo=
-github.com/sigstore/sigstore v1.8.1/go.mod h1:02SL1158BSj15bZyOFz7m+/nJzLZfFd9A8ab3Kz7w/E=
-github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 h1:rEDdUefulkIQaMJyzLwtgPDLNXBIltBABiFYfb0YmgQ=
-github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1/go.mod h1:RCdYCc1IxCYWzh2IdzdA6Yf7JIY0cMRqH08fpQYechw=
-github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 h1:DvRWG99QGWZC5mp42SEde2Xke/Q384Idnj2da7yB+Mk=
-github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1/go.mod h1:s13mo3a0UCQS3+PAUUZfvKe48sMDMsHk2GE1b2YfPcU=
-github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 h1:lwdRsJv1UbBemuk7w5YfXAQilQxMoFevrzamdPbG0wY=
-github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1/go.mod h1:2OaSQ80EcdyVRSQ3T4d1lsc6Scopblsiq8U2AEk5K1A=
-github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 h1:9Ki0qudKpc1FQdef7xHO2bkLyTuw+qNUpWRzjBEmF4c=
-github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1/go.mod h1:nhIgyu4YwwNgalIwTGsoAzam16jjAn3ADRSWKbWPwGI=
+github.com/sigstore/sigstore v1.8.3 h1:G7LVXqL+ekgYtYdksBks9B38dPoIsbscjQJX/MGWkA4=
+github.com/sigstore/sigstore v1.8.3/go.mod h1:mqbTEariiGA94cn6G3xnDiV6BD8eSLdL/eA7bvJ0fVs=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 h1:LTfPadUAo+PDRUbbdqbeSl2OuoFQwUFTnJ4stu+nwWw=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3/go.mod h1:QV/Lxlxm0POyhfyBtIbTWxNeF18clMlkkyL9mu45y18=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 h1:xgbPRCr2npmmsuVVteJqi/ERw9+I13Wou7kq0Yk4D8g=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3/go.mod h1:G4+I83FILPX6MtnoaUdmv/bRGEVtR3JdLeJa/kXdk/0=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3 h1:vDl2fqPT0h3D/k6NZPlqnKFd1tz3335wm39qjvpZNJc=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3/go.mod h1:9uOJXbXEXj+M6QjMKH5PaL5WDMu43rHfbIMgXzA8eKI=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3 h1:h9G8j+Ds21zqqulDbA/R/ft64oQQIyp8S7wJYABYSlg=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3/go.mod h1:zgCeHOuqF6k7A7TTEvftcA9V3FRzB7mrPtHOhXAQBnc=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
@@ -331,38 +322,38 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
-go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
-go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
-go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
-go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
-go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
-go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
-go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
-go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
+go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
+go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
+go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
+go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
+go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
+go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
+go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
-go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
-go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
-go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
+golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
+golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w=
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
@@ -374,8 +365,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
-golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
+golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -390,11 +381,11 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
+golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
-golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA=
+golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
+golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -402,39 +393,34 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
+golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
-golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
+golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
+golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
@@ -453,30 +439,28 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA=
-golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
+golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-google.golang.org/api v0.156.0 h1:yloYcGbBtVYjLKQe4enCunxvwn3s2w/XPrrhVf6MsvQ=
-google.golang.org/api v0.156.0/go.mod h1:bUSmn4KFO0Q+69zo9CNIDp4Psi6BqM0np0CbzKRSiSY=
+google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
+google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg=
-google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k=
-google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe h1:0poefMBYvYbs7g5UkjS6HcxBPaTRAmznle9jnxYoAI8=
-google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
+google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
+google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
+google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E=
+google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
@@ -484,8 +468,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY=
-google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
+google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
+google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
@@ -497,8 +481,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -509,8 +491,6 @@ gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKK
gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
-gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
@@ -528,8 +508,8 @@ k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc=
k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU=
k8s.io/client-go v0.29.1 h1:19B/+2NGEwnFLzt0uB5kNJnfTsbV8w6TgQRz9l7ti7A=
k8s.io/client-go v0.29.1/go.mod h1:TDG/psL9hdet0TI9mGyHJSgRkW3H9JZk2dNEUS7bRks=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
+k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
+k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
From 323c81f2cb45c36e53fa1a209d82ed6d6f7a82b6 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Tue, 16 Apr 2024 12:02:53 -0700
Subject: [PATCH 22/41] Export 058979cecfc5402d74a542fe70967806e7ee47ca
Export: 058979cecfc5402d74a542fe70967806e7ee47ca
---
proto/platform/iam/v1/clients.go | 13 +-
proto/platform/iam/v1/doc.go | 1 -
proto/platform/iam/v1/sigstore.platform.pb.go | 803 ------------------
.../iam/v1/sigstore.platform.pb.gw.go | 501 -----------
proto/platform/iam/v1/sigstore.platform.proto | 134 ---
.../iam/v1/sigstore.platform_grpc.pb.go | 221 -----
proto/platform/iam/v1/test/mock_client.go | 5 -
proto/platform/iam/v1/test/mock_sigstore.go | 85 --
8 files changed, 1 insertion(+), 1762 deletions(-)
delete mode 100644 proto/platform/iam/v1/sigstore.platform.pb.go
delete mode 100644 proto/platform/iam/v1/sigstore.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/sigstore.platform.proto
delete mode 100644 proto/platform/iam/v1/sigstore.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/test/mock_sigstore.go
diff --git a/proto/platform/iam/v1/clients.go b/proto/platform/iam/v1/clients.go
index d1df1337..f27fab3d 100644
--- a/proto/platform/iam/v1/clients.go
+++ b/proto/platform/iam/v1/clients.go
@@ -35,8 +35,6 @@ type Clients interface {
Policies() PoliciesClient
- Sigstore() SigstoreServiceClient
-
Close() error
}
@@ -80,8 +78,6 @@ func NewClients(ctx context.Context, iamURL string, token string) (Clients, erro
policy: NewPoliciesClient(conn),
- sigstore: NewSigstoreServiceClient(conn),
-
conn: conn,
}, nil
}
@@ -100,8 +96,7 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
subscription: events.NewSubscriptionsClient(conn),
- policy: NewPoliciesClient(conn),
- sigstore: NewSigstoreServiceClient(conn),
+ policy: NewPoliciesClient(conn),
// conn is not set, this client struct does not own closing it.
}
@@ -122,8 +117,6 @@ type clients struct {
policy PoliciesClient
- sigstore SigstoreServiceClient
-
conn *grpc.ClientConn
}
@@ -167,10 +160,6 @@ func (c *clients) Policies() PoliciesClient {
return c.policy
}
-func (c *clients) Sigstore() SigstoreServiceClient {
- return c.sigstore
-}
-
func (c *clients) Close() error {
if c.conn != nil {
return c.conn.Close()
diff --git a/proto/platform/iam/v1/doc.go b/proto/platform/iam/v1/doc.go
index 2dbc0d23..c65b13e5 100644
--- a/proto/platform/iam/v1/doc.go
+++ b/proto/platform/iam/v1/doc.go
@@ -12,7 +12,6 @@ SPDX-License-Identifier: Apache-2.0
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. account_associations.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. policies.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity_providers.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sigstore.platform.proto
// Package v1 contains the v1 GRPC client and server definitions
// for implementing IAM interactions for the Console.
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.go b/proto/platform/iam/v1/sigstore.platform.pb.go
deleted file mode 100644
index 29503223..00000000
--- a/proto/platform/iam/v1/sigstore.platform.pb.go
+++ /dev/null
@@ -1,803 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: sigstore.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type CreateSigstoreRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group UIDP path under which the new sigstore instance is associated.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Sigstore is the sigstore instance to create;
- Sigstore *Sigstore `protobuf:"bytes,2,opt,name=sigstore,proto3" json:"sigstore,omitempty"`
-}
-
-func (x *CreateSigstoreRequest) Reset() {
- *x = CreateSigstoreRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateSigstoreRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateSigstoreRequest) ProtoMessage() {}
-
-func (x *CreateSigstoreRequest) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateSigstoreRequest.ProtoReflect.Descriptor instead.
-func (*CreateSigstoreRequest) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CreateSigstoreRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateSigstoreRequest) GetSigstore() *Sigstore {
- if x != nil {
- return x.Sigstore
- }
- return nil
-}
-
-type Sigstore struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is identifier of this specific sigstore instance.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human-readable name of the sigstore instance.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human-readable description of the sigstore instance.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // certificate authority for this instance of sigstore
- CertificateAuthority *CertificateAuthority `protobuf:"bytes,4,opt,name=certificate_authority,json=certificateAuthority,proto3" json:"certificate_authority,omitempty"`
- // unique hostname of this sigstore instance
- Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"`
-}
-
-func (x *Sigstore) Reset() {
- *x = Sigstore{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sigstore) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sigstore) ProtoMessage() {}
-
-func (x *Sigstore) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sigstore.ProtoReflect.Descriptor instead.
-func (*Sigstore) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Sigstore) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Sigstore) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Sigstore) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Sigstore) GetCertificateAuthority() *CertificateAuthority {
- if x != nil {
- return x.CertificateAuthority
- }
- return nil
-}
-
-func (x *Sigstore) GetHostname() string {
- if x != nil {
- return x.Hostname
- }
- return ""
-}
-
-type SigstoreList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Sigstore `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *SigstoreList) Reset() {
- *x = SigstoreList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SigstoreList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SigstoreList) ProtoMessage() {}
-
-func (x *SigstoreList) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SigstoreList.ProtoReflect.Descriptor instead.
-func (*SigstoreList) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *SigstoreList) GetItems() []*Sigstore {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type SigstoreFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filers records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // name is the exact name of the record.
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *SigstoreFilter) Reset() {
- *x = SigstoreFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *SigstoreFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SigstoreFilter) ProtoMessage() {}
-
-func (x *SigstoreFilter) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use SigstoreFilter.ProtoReflect.Descriptor instead.
-func (*SigstoreFilter) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SigstoreFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *SigstoreFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *SigstoreFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type DeleteSigstoreRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteSigstoreRequest) Reset() {
- *x = DeleteSigstoreRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteSigstoreRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteSigstoreRequest) ProtoMessage() {}
-
-func (x *DeleteSigstoreRequest) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteSigstoreRequest.ProtoReflect.Descriptor instead.
-func (*DeleteSigstoreRequest) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *DeleteSigstoreRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type CertificateAuthority struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Ca:
- //
- // *CertificateAuthority_KmsCa
- // *CertificateAuthority_GoogleCa
- Ca isCertificateAuthority_Ca `protobuf_oneof:"ca"`
-}
-
-func (x *CertificateAuthority) Reset() {
- *x = CertificateAuthority{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CertificateAuthority) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertificateAuthority) ProtoMessage() {}
-
-func (x *CertificateAuthority) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertificateAuthority.ProtoReflect.Descriptor instead.
-func (*CertificateAuthority) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (m *CertificateAuthority) GetCa() isCertificateAuthority_Ca {
- if m != nil {
- return m.Ca
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetKmsCa() *KMSCA {
- if x, ok := x.GetCa().(*CertificateAuthority_KmsCa); ok {
- return x.KmsCa
- }
- return nil
-}
-
-func (x *CertificateAuthority) GetGoogleCa() *GoogleCA {
- if x, ok := x.GetCa().(*CertificateAuthority_GoogleCa); ok {
- return x.GoogleCa
- }
- return nil
-}
-
-type isCertificateAuthority_Ca interface {
- isCertificateAuthority_Ca()
-}
-
-type CertificateAuthority_KmsCa struct {
- // kmsca is a KMS-based CA that requires a root cert and KMS signing key
- KmsCa *KMSCA `protobuf:"bytes,1,opt,name=kms_ca,json=kmsCa,proto3,oneof"`
-}
-
-type CertificateAuthority_GoogleCa struct {
- // google_ca is the Google Certificate Authority service
- GoogleCa *GoogleCA `protobuf:"bytes,2,opt,name=google_ca,json=googleCa,proto3,oneof"`
-}
-
-func (*CertificateAuthority_KmsCa) isCertificateAuthority_Ca() {}
-
-func (*CertificateAuthority_GoogleCa) isCertificateAuthority_Ca() {}
-
-type KMSCA struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // key_ref is a unique reference to the signing key used for this CA
- // most likely a KMS key prefixed with gcpkms://, awskms://, azurekms:// etc
- // and the relevant resource name
- KeyRef string `protobuf:"bytes,1,opt,name=key_ref,json=keyRef,proto3" json:"key_ref,omitempty"`
- // cert_chain is the root certificate and (optional) chain
- // in PEM-encoded format
- CertChain string `protobuf:"bytes,2,opt,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
-}
-
-func (x *KMSCA) Reset() {
- *x = KMSCA{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *KMSCA) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KMSCA) ProtoMessage() {}
-
-func (x *KMSCA) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use KMSCA.ProtoReflect.Descriptor instead.
-func (*KMSCA) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *KMSCA) GetKeyRef() string {
- if x != nil {
- return x.KeyRef
- }
- return ""
-}
-
-func (x *KMSCA) GetCertChain() string {
- if x != nil {
- return x.CertChain
- }
- return ""
-}
-
-type GoogleCA struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // ref is a unique reference to the Google CA service in the format
- // projects//locations//
- Ref string `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
-}
-
-func (x *GoogleCA) Reset() {
- *x = GoogleCA{}
- if protoimpl.UnsafeEnabled {
- mi := &file_sigstore_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GoogleCA) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleCA) ProtoMessage() {}
-
-func (x *GoogleCA) ProtoReflect() protoreflect.Message {
- mi := &file_sigstore_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleCA.ProtoReflect.Descriptor instead.
-func (*GoogleCA) Descriptor() ([]byte, []int) {
- return file_sigstore_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *GoogleCA) GetRef() string {
- if x != nil {
- return x.Ref
- }
- return ""
-}
-
-var File_sigstore_platform_proto protoreflect.FileDescriptor
-
-var file_sigstore_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61,
- 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
- 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7b, 0x0a,
- 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
- 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x08, 0x73,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
- 0x52, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x08, 0x53,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x15, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x52, 0x14, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73,
- 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73,
- 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x70,
- 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f,
- 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x6b, 0x6d,
- 0x73, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4b, 0x4d, 0x53, 0x43, 0x41, 0x48, 0x00, 0x52, 0x05, 0x6b, 0x6d,
- 0x73, 0x43, 0x61, 0x12, 0x40, 0x0a, 0x09, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x61,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x41, 0x48, 0x00, 0x52, 0x08, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x43, 0x61, 0x42, 0x04, 0x0a, 0x02, 0x63, 0x61, 0x22, 0x3f, 0x0a, 0x05, 0x4b,
- 0x4d, 0x53, 0x43, 0x41, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x0a,
- 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x1c, 0x0a, 0x08,
- 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x41, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x32, 0xaf, 0x04, 0x0a, 0x0f, 0x53,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9a,
- 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f,
- 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x3d, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x08, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x1f,
- 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65,
- 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa5, 0x0d, 0x12, 0x7e, 0x0a, 0x04, 0x4c,
- 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69,
- 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xa7, 0x0d, 0x10, 0x01, 0x12, 0x7e, 0x0a, 0x06, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa8, 0x0d, 0x12, 0x7f, 0x0a, 0x06, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x53, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
- 0x73, 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa6, 0x0d, 0x42, 0x6a, 0x0a, 0x22,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
- 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x76, 0x31, 0x42, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x53,
- 0x69, 0x67, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_sigstore_platform_proto_rawDescOnce sync.Once
- file_sigstore_platform_proto_rawDescData = file_sigstore_platform_proto_rawDesc
-)
-
-func file_sigstore_platform_proto_rawDescGZIP() []byte {
- file_sigstore_platform_proto_rawDescOnce.Do(func() {
- file_sigstore_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_sigstore_platform_proto_rawDescData)
- })
- return file_sigstore_platform_proto_rawDescData
-}
-
-var file_sigstore_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_sigstore_platform_proto_goTypes = []interface{}{
- (*CreateSigstoreRequest)(nil), // 0: chainguard.platform.iam.CreateSigstoreRequest
- (*Sigstore)(nil), // 1: chainguard.platform.iam.Sigstore
- (*SigstoreList)(nil), // 2: chainguard.platform.iam.SigstoreList
- (*SigstoreFilter)(nil), // 3: chainguard.platform.iam.SigstoreFilter
- (*DeleteSigstoreRequest)(nil), // 4: chainguard.platform.iam.DeleteSigstoreRequest
- (*CertificateAuthority)(nil), // 5: chainguard.platform.iam.CertificateAuthority
- (*KMSCA)(nil), // 6: chainguard.platform.iam.KMSCA
- (*GoogleCA)(nil), // 7: chainguard.platform.iam.GoogleCA
- (*v1.UIDPFilter)(nil), // 8: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 9: google.protobuf.Empty
-}
-var file_sigstore_platform_proto_depIdxs = []int32{
- 1, // 0: chainguard.platform.iam.CreateSigstoreRequest.sigstore:type_name -> chainguard.platform.iam.Sigstore
- 5, // 1: chainguard.platform.iam.Sigstore.certificate_authority:type_name -> chainguard.platform.iam.CertificateAuthority
- 1, // 2: chainguard.platform.iam.SigstoreList.items:type_name -> chainguard.platform.iam.Sigstore
- 8, // 3: chainguard.platform.iam.SigstoreFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 6, // 4: chainguard.platform.iam.CertificateAuthority.kms_ca:type_name -> chainguard.platform.iam.KMSCA
- 7, // 5: chainguard.platform.iam.CertificateAuthority.google_ca:type_name -> chainguard.platform.iam.GoogleCA
- 0, // 6: chainguard.platform.iam.SigstoreService.Create:input_type -> chainguard.platform.iam.CreateSigstoreRequest
- 3, // 7: chainguard.platform.iam.SigstoreService.List:input_type -> chainguard.platform.iam.SigstoreFilter
- 4, // 8: chainguard.platform.iam.SigstoreService.Delete:input_type -> chainguard.platform.iam.DeleteSigstoreRequest
- 1, // 9: chainguard.platform.iam.SigstoreService.Update:input_type -> chainguard.platform.iam.Sigstore
- 1, // 10: chainguard.platform.iam.SigstoreService.Create:output_type -> chainguard.platform.iam.Sigstore
- 2, // 11: chainguard.platform.iam.SigstoreService.List:output_type -> chainguard.platform.iam.SigstoreList
- 9, // 12: chainguard.platform.iam.SigstoreService.Delete:output_type -> google.protobuf.Empty
- 1, // 13: chainguard.platform.iam.SigstoreService.Update:output_type -> chainguard.platform.iam.Sigstore
- 10, // [10:14] is the sub-list for method output_type
- 6, // [6:10] 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_sigstore_platform_proto_init() }
-func file_sigstore_platform_proto_init() {
- if File_sigstore_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_sigstore_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateSigstoreRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sigstore); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SigstoreList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SigstoreFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteSigstoreRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CertificateAuthority); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KMSCA); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_sigstore_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GoogleCA); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_sigstore_platform_proto_msgTypes[5].OneofWrappers = []interface{}{
- (*CertificateAuthority_KmsCa)(nil),
- (*CertificateAuthority_GoogleCa)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_sigstore_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_sigstore_platform_proto_goTypes,
- DependencyIndexes: file_sigstore_platform_proto_depIdxs,
- MessageInfos: file_sigstore_platform_proto_msgTypes,
- }.Build()
- File_sigstore_platform_proto = out.File
- file_sigstore_platform_proto_rawDesc = nil
- file_sigstore_platform_proto_goTypes = nil
- file_sigstore_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/sigstore.platform.pb.gw.go b/proto/platform/iam/v1/sigstore.platform.pb.gw.go
deleted file mode 100644
index db3145ae..00000000
--- a/proto/platform/iam/v1/sigstore.platform.pb.gw.go
+++ /dev/null
@@ -1,501 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: sigstore.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_SigstoreService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateSigstoreRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Sigstore); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SigstoreService_Create_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateSigstoreRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Sigstore); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_SigstoreService_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_SigstoreService_List_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SigstoreFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SigstoreService_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SigstoreService_List_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq SigstoreFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SigstoreService_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_SigstoreService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteSigstoreRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SigstoreService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteSigstoreRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_SigstoreService_Update_0(ctx context.Context, marshaler runtime.Marshaler, client SigstoreServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Sigstore
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_SigstoreService_Update_0(ctx context.Context, marshaler runtime.Marshaler, server SigstoreServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Sigstore
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterSigstoreServiceHandlerServer registers the http handlers for service SigstoreService to "mux".
-// UnaryRPC :call SigstoreServiceServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSigstoreServiceHandlerFromEndpoint instead.
-func RegisterSigstoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SigstoreServiceServer) error {
-
- mux.Handle("POST", pattern_SigstoreService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Create", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SigstoreService_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SigstoreService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/List", runtime.WithHTTPPathPattern("/iam/v1/sigstore"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SigstoreService_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_SigstoreService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Delete", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SigstoreService_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_SigstoreService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Update", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_SigstoreService_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterSigstoreServiceHandlerFromEndpoint is same as RegisterSigstoreServiceHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterSigstoreServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterSigstoreServiceHandler(ctx, mux, conn)
-}
-
-// RegisterSigstoreServiceHandler registers the http handlers for service SigstoreService to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterSigstoreServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterSigstoreServiceHandlerClient(ctx, mux, NewSigstoreServiceClient(conn))
-}
-
-// RegisterSigstoreServiceHandlerClient registers the http handlers for service SigstoreService
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SigstoreServiceClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SigstoreServiceClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "SigstoreServiceClient" to call the correct interceptors.
-func RegisterSigstoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SigstoreServiceClient) error {
-
- mux.Handle("POST", pattern_SigstoreService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Create", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SigstoreService_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_SigstoreService_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/List", runtime.WithHTTPPathPattern("/iam/v1/sigstore"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SigstoreService_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_SigstoreService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Delete", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SigstoreService_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_SigstoreService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.SigstoreService/Update", runtime.WithHTTPPathPattern("/iam/v1/sigstore/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_SigstoreService_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_SigstoreService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_SigstoreService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "parent_id"}, ""))
-
- pattern_SigstoreService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "sigstore"}, ""))
-
- pattern_SigstoreService_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "id"}, ""))
-
- pattern_SigstoreService_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "sigstore", "id"}, ""))
-)
-
-var (
- forward_SigstoreService_Create_0 = runtime.ForwardResponseMessage
-
- forward_SigstoreService_List_0 = runtime.ForwardResponseMessage
-
- forward_SigstoreService_Delete_0 = runtime.ForwardResponseMessage
-
- forward_SigstoreService_Update_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/sigstore.platform.proto b/proto/platform/iam/v1/sigstore.platform.proto
deleted file mode 100644
index f1613ae5..00000000
--- a/proto/platform/iam/v1/sigstore.platform.proto
+++ /dev/null
@@ -1,134 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMSigstoreProto";
-
-package chainguard.platform.iam;
-
-import "google/protobuf/empty.proto";
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service SigstoreService {
- rpc Create(CreateSigstoreRequest) returns (Sigstore) {
- option (google.api.http) = {
- post: "/iam/v1/sigstore/{parent_id=**}"
- body: "sigstore"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_SIGSTORE_CREATE]
- }
- };
- }
-
- rpc List(SigstoreFilter) returns (SigstoreList) {
- option (google.api.http) = {
- get: "/iam/v1/sigstore"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_SIGSTORE_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeleteSigstoreRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/sigstore/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_SIGSTORE_DELETE]
- }
- };
- }
-
- rpc Update(Sigstore) returns (Sigstore) {
- option (google.api.http) = {
- put: "/iam/v1/sigstore/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_SIGSTORE_UPDATE]
- }
- };
- }
-}
-
-message CreateSigstoreRequest {
- // parent_id, The Group UIDP path under which the new sigstore instance is associated.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // Sigstore is the sigstore instance to create;
- Sigstore sigstore = 2;
-}
-
-message Sigstore {
- // id is identifier of this specific sigstore instance.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // name, human-readable name of the sigstore instance.
- string name = 2;
-
- // description, human-readable description of the sigstore instance.
- string description = 3;
-
- // certificate authority for this instance of sigstore
- CertificateAuthority certificate_authority = 4;
-
- // unique hostname of this sigstore instance
- string hostname = 5;
-}
-
-message SigstoreList {
- repeated Sigstore items = 1;
-}
-
-message SigstoreFilter {
- // id is the exact UIDP of the record.
- string id = 1;
-
- // uidp filers records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 2;
-
- // name is the exact name of the record.
- string name = 3;
-}
-
-message DeleteSigstoreRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message CertificateAuthority {
- oneof ca {
- // kmsca is a KMS-based CA that requires a root cert and KMS signing key
- KMSCA kms_ca = 1;
-
- // google_ca is the Google Certificate Authority service
- GoogleCA google_ca =2;
- }
-}
-
-message KMSCA {
- // key_ref is a unique reference to the signing key used for this CA
- // most likely a KMS key prefixed with gcpkms://, awskms://, azurekms:// etc
- // and the relevant resource name
- string key_ref = 1;
-
- // cert_chain is the root certificate and (optional) chain
- // in PEM-encoded format
- string cert_chain = 2;
-}
-
-message GoogleCA {
- // ref is a unique reference to the Google CA service in the format
- // projects//locations//
- string ref = 1;
-}
diff --git a/proto/platform/iam/v1/sigstore.platform_grpc.pb.go b/proto/platform/iam/v1/sigstore.platform_grpc.pb.go
deleted file mode 100644
index 97750f65..00000000
--- a/proto/platform/iam/v1/sigstore.platform_grpc.pb.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: sigstore.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- SigstoreService_Create_FullMethodName = "/chainguard.platform.iam.SigstoreService/Create"
- SigstoreService_List_FullMethodName = "/chainguard.platform.iam.SigstoreService/List"
- SigstoreService_Delete_FullMethodName = "/chainguard.platform.iam.SigstoreService/Delete"
- SigstoreService_Update_FullMethodName = "/chainguard.platform.iam.SigstoreService/Update"
-)
-
-// SigstoreServiceClient is the client API for SigstoreService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SigstoreServiceClient interface {
- Create(ctx context.Context, in *CreateSigstoreRequest, opts ...grpc.CallOption) (*Sigstore, error)
- List(ctx context.Context, in *SigstoreFilter, opts ...grpc.CallOption) (*SigstoreList, error)
- Delete(ctx context.Context, in *DeleteSigstoreRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- Update(ctx context.Context, in *Sigstore, opts ...grpc.CallOption) (*Sigstore, error)
-}
-
-type sigstoreServiceClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewSigstoreServiceClient(cc grpc.ClientConnInterface) SigstoreServiceClient {
- return &sigstoreServiceClient{cc}
-}
-
-func (c *sigstoreServiceClient) Create(ctx context.Context, in *CreateSigstoreRequest, opts ...grpc.CallOption) (*Sigstore, error) {
- out := new(Sigstore)
- err := c.cc.Invoke(ctx, SigstoreService_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *sigstoreServiceClient) List(ctx context.Context, in *SigstoreFilter, opts ...grpc.CallOption) (*SigstoreList, error) {
- out := new(SigstoreList)
- err := c.cc.Invoke(ctx, SigstoreService_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *sigstoreServiceClient) Delete(ctx context.Context, in *DeleteSigstoreRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, SigstoreService_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *sigstoreServiceClient) Update(ctx context.Context, in *Sigstore, opts ...grpc.CallOption) (*Sigstore, error) {
- out := new(Sigstore)
- err := c.cc.Invoke(ctx, SigstoreService_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// SigstoreServiceServer is the server API for SigstoreService service.
-// All implementations must embed UnimplementedSigstoreServiceServer
-// for forward compatibility
-type SigstoreServiceServer interface {
- Create(context.Context, *CreateSigstoreRequest) (*Sigstore, error)
- List(context.Context, *SigstoreFilter) (*SigstoreList, error)
- Delete(context.Context, *DeleteSigstoreRequest) (*emptypb.Empty, error)
- Update(context.Context, *Sigstore) (*Sigstore, error)
- mustEmbedUnimplementedSigstoreServiceServer()
-}
-
-// UnimplementedSigstoreServiceServer must be embedded to have forward compatible implementations.
-type UnimplementedSigstoreServiceServer struct {
-}
-
-func (UnimplementedSigstoreServiceServer) Create(context.Context, *CreateSigstoreRequest) (*Sigstore, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedSigstoreServiceServer) List(context.Context, *SigstoreFilter) (*SigstoreList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedSigstoreServiceServer) Delete(context.Context, *DeleteSigstoreRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedSigstoreServiceServer) Update(context.Context, *Sigstore) (*Sigstore, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedSigstoreServiceServer) mustEmbedUnimplementedSigstoreServiceServer() {}
-
-// UnsafeSigstoreServiceServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to SigstoreServiceServer will
-// result in compilation errors.
-type UnsafeSigstoreServiceServer interface {
- mustEmbedUnimplementedSigstoreServiceServer()
-}
-
-func RegisterSigstoreServiceServer(s grpc.ServiceRegistrar, srv SigstoreServiceServer) {
- s.RegisterService(&SigstoreService_ServiceDesc, srv)
-}
-
-func _SigstoreService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateSigstoreRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SigstoreServiceServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SigstoreService_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SigstoreServiceServer).Create(ctx, req.(*CreateSigstoreRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _SigstoreService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(SigstoreFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SigstoreServiceServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SigstoreService_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SigstoreServiceServer).List(ctx, req.(*SigstoreFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _SigstoreService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteSigstoreRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SigstoreServiceServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SigstoreService_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SigstoreServiceServer).Delete(ctx, req.(*DeleteSigstoreRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _SigstoreService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Sigstore)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(SigstoreServiceServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: SigstoreService_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(SigstoreServiceServer).Update(ctx, req.(*Sigstore))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// SigstoreService_ServiceDesc is the grpc.ServiceDesc for SigstoreService service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var SigstoreService_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.SigstoreService",
- HandlerType: (*SigstoreServiceServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _SigstoreService_Create_Handler,
- },
- {
- MethodName: "List",
- Handler: _SigstoreService_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _SigstoreService_Delete_Handler,
- },
- {
- MethodName: "Update",
- Handler: _SigstoreService_Update_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "sigstore.platform.proto",
-}
diff --git a/proto/platform/iam/v1/test/mock_client.go b/proto/platform/iam/v1/test/mock_client.go
index f852d27a..90ccc1e6 100644
--- a/proto/platform/iam/v1/test/mock_client.go
+++ b/proto/platform/iam/v1/test/mock_client.go
@@ -23,7 +23,6 @@ type MockIAMClient struct {
GroupAccountAssociationsClient MockGroupAccountAssociationsClient
SubscriptionsClient MockSubscriptionsClient
PoliciesClient MockPoliciesClient
- SigstoreClient MockSigstoreClient
}
var _ iam.Clients = (*MockIAMClient)(nil)
@@ -68,10 +67,6 @@ func (m MockIAMClient) Policies() iam.PoliciesClient {
return &m.PoliciesClient
}
-func (m MockIAMClient) Sigstore() iam.SigstoreServiceClient {
- return &m.SigstoreClient
-}
-
func (m MockIAMClient) Close() error {
return m.OnClose
}
diff --git a/proto/platform/iam/v1/test/mock_sigstore.go b/proto/platform/iam/v1/test/mock_sigstore.go
deleted file mode 100644
index 7433bc6a..00000000
--- a/proto/platform/iam/v1/test/mock_sigstore.go
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-)
-
-var _ iam.SigstoreServiceClient = (*MockSigstoreClient)(nil)
-
-type MockSigstoreClient struct {
- OnCreate []SigstoreOnCreate
- OnUpdate []SigstoreOnUpdate
- OnDelete []SigstoreOnDelete
- OnList []SigstoreOnList
-}
-
-type SigstoreOnCreate struct {
- Given *iam.CreateSigstoreRequest
- Created *iam.Sigstore
- Error error
-}
-
-type SigstoreOnUpdate struct {
- Given *iam.Sigstore
- Updated *iam.Sigstore
- Error error
-}
-
-type SigstoreOnDelete struct {
- Given *iam.DeleteSigstoreRequest
- Error error
-}
-
-type SigstoreOnList struct {
- Given *iam.SigstoreFilter
- List *iam.SigstoreList
- Error error
-}
-
-func (m MockSigstoreClient) Create(_ context.Context, given *iam.CreateSigstoreRequest, _ ...grpc.CallOption) (*iam.Sigstore, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSigstoreClient) Update(_ context.Context, given *iam.Sigstore, _ ...grpc.CallOption) (*iam.Sigstore, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSigstoreClient) Delete(_ context.Context, given *iam.DeleteSigstoreRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockSigstoreClient) List(_ context.Context, given *iam.SigstoreFilter, _ ...grpc.CallOption) (*iam.SigstoreList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
From 738742d3dce5adc0df1ed4b6c3bc8265cc8319f1 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 18 Apr 2024 08:40:01 -0700
Subject: [PATCH 23/41] Export b7d0875ff1ea979b66c46cfca0459c9f5ba10868
Export: b7d0875ff1ea979b66c46cfca0459c9f5ba10868
---
proto/platform/tenant/v1/clients.go | 26 -
proto/platform/tenant/v1/doc.go | 3 -
.../tenant/v1/namespace.platform.pb.go | 395 --------------
.../tenant/v1/namespace.platform.proto | 61 ---
.../tenant/v1/namespace.platform_grpc.pb.go | 109 ----
proto/platform/tenant/v1/node.platform.pb.go | 499 ------------------
proto/platform/tenant/v1/node.platform.proto | 78 ---
.../tenant/v1/node.platform_grpc.pb.go | 109 ----
proto/platform/tenant/v1/test/mock_client.go | 15 -
.../tenant/v1/test/mock_namespaces.go | 38 --
proto/platform/tenant/v1/test/mock_nodes.go | 38 --
.../platform/tenant/v1/test/mock_workloads.go | 38 --
.../tenant/v1/workload.platform.pb.go | 436 ---------------
.../tenant/v1/workload.platform.proto | 71 ---
.../tenant/v1/workload.platform_grpc.pb.go | 109 ----
15 files changed, 2025 deletions(-)
delete mode 100644 proto/platform/tenant/v1/namespace.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/namespace.platform.proto
delete mode 100644 proto/platform/tenant/v1/namespace.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/node.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/node.platform.proto
delete mode 100644 proto/platform/tenant/v1/node.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/test/mock_namespaces.go
delete mode 100644 proto/platform/tenant/v1/test/mock_nodes.go
delete mode 100644 proto/platform/tenant/v1/test/mock_workloads.go
delete mode 100644 proto/platform/tenant/v1/workload.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/workload.platform.proto
delete mode 100644 proto/platform/tenant/v1/workload.platform_grpc.pb.go
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
index 3fc4389e..960cc14d 100644
--- a/proto/platform/tenant/v1/clients.go
+++ b/proto/platform/tenant/v1/clients.go
@@ -28,10 +28,6 @@ type Clients interface {
PolicyResults() PolicyResultsClient
VulnReports() VulnReportsClient
- Nodes() NodesClient
- Namespaces() NamespacesClient
- Workloads() WorkloadsClient
-
Close() error
}
@@ -68,9 +64,6 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
vulnReports: NewVulnReportsClient(conn),
risks: NewRisksClient(conn),
signatures: NewSignaturesClient(conn),
- nodes: NewNodesClient(conn),
- namespaces: NewNamespacesClient(conn),
- workloads: NewWorkloadsClient(conn),
policyResults: NewPolicyResultsClient(conn),
conn: conn,
@@ -87,9 +80,6 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
risks: NewRisksClient(conn),
signatures: NewSignaturesClient(conn),
policyResults: NewPolicyResultsClient(conn),
- nodes: NewNodesClient(conn),
- namespaces: NewNamespacesClient(conn),
- workloads: NewWorkloadsClient(conn),
// conn is not set, this client struct does not own closing it.
}
}
@@ -105,10 +95,6 @@ type clients struct {
policyResults PolicyResultsClient
vulnReports VulnReportsClient
- nodes NodesClient
- namespaces NamespacesClient
- workloads WorkloadsClient
-
conn *grpc.ClientConn
}
@@ -140,18 +126,6 @@ func (c *clients) PolicyResults() PolicyResultsClient {
return c.policyResults
}
-func (c *clients) Nodes() NodesClient {
- return c.nodes
-}
-
-func (c *clients) Namespaces() NamespacesClient {
- return c.namespaces
-}
-
-func (c *clients) Workloads() WorkloadsClient {
- return c.workloads
-}
-
func (c *clients) VulnReports() VulnReportsClient {
return c.vulnReports
}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
index 146b7989..b8468745 100644
--- a/proto/platform/tenant/v1/doc.go
+++ b/proto/platform/tenant/v1/doc.go
@@ -8,11 +8,8 @@ SPDX-License-Identifier: Apache-2.0
//
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. cluster.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative context.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative node.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative namespace.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative policy_results.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative workload.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. record.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. risk.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
diff --git a/proto/platform/tenant/v1/namespace.platform.pb.go b/proto/platform/tenant/v1/namespace.platform.pb.go
deleted file mode 100644
index a68fcab2..00000000
--- a/proto/platform/tenant/v1/namespace.platform.pb.go
+++ /dev/null
@@ -1,395 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: namespace.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Namespace struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Namespace UIDP at which this Namespace resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the Namespace.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this Namespace.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // remote_id is the remote ID of this Namespace.
- RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
- // last_seen tracks the timestamp at which this namespace was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
-}
-
-func (x *Namespace) Reset() {
- *x = Namespace{}
- if protoimpl.UnsafeEnabled {
- mi := &file_namespace_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Namespace) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Namespace) ProtoMessage() {}
-
-func (x *Namespace) ProtoReflect() protoreflect.Message {
- mi := &file_namespace_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Namespace.ProtoReflect.Descriptor instead.
-func (*Namespace) Descriptor() ([]byte, []int) {
- return file_namespace_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Namespace) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Namespace) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Namespace) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Namespace) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *Namespace) GetLabels() string {
- if x != nil {
- return x.Labels
- }
- return ""
-}
-
-func (x *Namespace) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-type NamespaceList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Namespace `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *NamespaceList) Reset() {
- *x = NamespaceList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_namespace_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NamespaceList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NamespaceList) ProtoMessage() {}
-
-func (x *NamespaceList) ProtoReflect() protoreflect.Message {
- mi := &file_namespace_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NamespaceList.ProtoReflect.Descriptor instead.
-func (*NamespaceList) Descriptor() ([]byte, []int) {
- return file_namespace_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *NamespaceList) GetItems() []*Namespace {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type NamespaceFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // remote_id is the remote ID of this Namespace.
- RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- // active_since is the timestamp after which returned namespaces
- // should have been active (last seen).
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // name filters on the resource name.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *NamespaceFilter) Reset() {
- *x = NamespaceFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_namespace_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NamespaceFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NamespaceFilter) ProtoMessage() {}
-
-func (x *NamespaceFilter) ProtoReflect() protoreflect.Message {
- mi := &file_namespace_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NamespaceFilter.ProtoReflect.Descriptor instead.
-func (*NamespaceFilter) Descriptor() ([]byte, []int) {
- return file_namespace_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *NamespaceFilter) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *NamespaceFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *NamespaceFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *NamespaceFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-var File_namespace_platform_proto protoreflect.FileDescriptor
-
-var file_namespace_platform_proto_rawDesc = []byte{
- 0x0a, 0x18, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72,
- 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x0d, 0x4e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x0f, 0x4e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72,
- 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75,
- 0x69, 0x64, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x7c, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a,
- 0x02, 0xcf, 0x08, 0x10, 0x01, 0x42, 0x74, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1c,
- 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
-}
-
-var (
- file_namespace_platform_proto_rawDescOnce sync.Once
- file_namespace_platform_proto_rawDescData = file_namespace_platform_proto_rawDesc
-)
-
-func file_namespace_platform_proto_rawDescGZIP() []byte {
- file_namespace_platform_proto_rawDescOnce.Do(func() {
- file_namespace_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_namespace_platform_proto_rawDescData)
- })
- return file_namespace_platform_proto_rawDescData
-}
-
-var file_namespace_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_namespace_platform_proto_goTypes = []interface{}{
- (*Namespace)(nil), // 0: chainguard.platform.tenant.Namespace
- (*NamespaceList)(nil), // 1: chainguard.platform.tenant.NamespaceList
- (*NamespaceFilter)(nil), // 2: chainguard.platform.tenant.NamespaceFilter
- (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
-}
-var file_namespace_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.tenant.Namespace.last_seen:type_name -> google.protobuf.Timestamp
- 0, // 1: chainguard.platform.tenant.NamespaceList.items:type_name -> chainguard.platform.tenant.Namespace
- 3, // 2: chainguard.platform.tenant.NamespaceFilter.active_since:type_name -> google.protobuf.Timestamp
- 4, // 3: chainguard.platform.tenant.NamespaceFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 2, // 4: chainguard.platform.tenant.Namespaces.List:input_type -> chainguard.platform.tenant.NamespaceFilter
- 1, // 5: chainguard.platform.tenant.Namespaces.List:output_type -> chainguard.platform.tenant.NamespaceList
- 5, // [5:6] is the sub-list for method output_type
- 4, // [4:5] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_namespace_platform_proto_init() }
-func file_namespace_platform_proto_init() {
- if File_namespace_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_namespace_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Namespace); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_namespace_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NamespaceList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_namespace_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NamespaceFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_namespace_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_namespace_platform_proto_goTypes,
- DependencyIndexes: file_namespace_platform_proto_depIdxs,
- MessageInfos: file_namespace_platform_proto_msgTypes,
- }.Build()
- File_namespace_platform_proto = out.File
- file_namespace_platform_proto_rawDesc = nil
- file_namespace_platform_proto_goTypes = nil
- file_namespace_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/namespace.platform.proto b/proto/platform/tenant/v1/namespace.platform.proto
deleted file mode 100644
index 0b86141a..00000000
--- a/proto/platform/tenant/v1/namespace.platform.proto
+++ /dev/null
@@ -1,61 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantNamespaceProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Namespaces {
- rpc List(NamespaceFilter) returns (NamespaceList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_NAMESPACES_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message Namespace {
- // id, The Namespace UIDP at which this Namespace resides.
- string id = 1;
-
- // name of the Namespace.
- string name = 2;
-
- // a short description of this Namespace.
- string description = 3;
-
- // remote_id is the remote ID of this Namespace.
- string remote_id = 4;
-
- string labels = 5;
-
- // last_seen tracks the timestamp at which this namespace was last seen.
- google.protobuf.Timestamp last_seen = 6;
-}
-
-message NamespaceList {
- repeated Namespace items = 1;
-}
-
-message NamespaceFilter {
- // remote_id is the remote ID of this Namespace.
- string remote_id = 2;
-
- // active_since is the timestamp after which returned namespaces
- // should have been active (last seen).
- google.protobuf.Timestamp active_since = 3;
-
- // name filters on the resource name.
- string name = 4;
-
-
- chainguard.platform.common.UIDPFilter uidp = 100;
-}
diff --git a/proto/platform/tenant/v1/namespace.platform_grpc.pb.go b/proto/platform/tenant/v1/namespace.platform_grpc.pb.go
deleted file mode 100644
index 178382e7..00000000
--- a/proto/platform/tenant/v1/namespace.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: namespace.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Namespaces_List_FullMethodName = "/chainguard.platform.tenant.Namespaces/List"
-)
-
-// NamespacesClient is the client API for Namespaces service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type NamespacesClient interface {
- List(ctx context.Context, in *NamespaceFilter, opts ...grpc.CallOption) (*NamespaceList, error)
-}
-
-type namespacesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewNamespacesClient(cc grpc.ClientConnInterface) NamespacesClient {
- return &namespacesClient{cc}
-}
-
-func (c *namespacesClient) List(ctx context.Context, in *NamespaceFilter, opts ...grpc.CallOption) (*NamespaceList, error) {
- out := new(NamespaceList)
- err := c.cc.Invoke(ctx, Namespaces_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// NamespacesServer is the server API for Namespaces service.
-// All implementations must embed UnimplementedNamespacesServer
-// for forward compatibility
-type NamespacesServer interface {
- List(context.Context, *NamespaceFilter) (*NamespaceList, error)
- mustEmbedUnimplementedNamespacesServer()
-}
-
-// UnimplementedNamespacesServer must be embedded to have forward compatible implementations.
-type UnimplementedNamespacesServer struct {
-}
-
-func (UnimplementedNamespacesServer) List(context.Context, *NamespaceFilter) (*NamespaceList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedNamespacesServer) mustEmbedUnimplementedNamespacesServer() {}
-
-// UnsafeNamespacesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to NamespacesServer will
-// result in compilation errors.
-type UnsafeNamespacesServer interface {
- mustEmbedUnimplementedNamespacesServer()
-}
-
-func RegisterNamespacesServer(s grpc.ServiceRegistrar, srv NamespacesServer) {
- s.RegisterService(&Namespaces_ServiceDesc, srv)
-}
-
-func _Namespaces_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NamespaceFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(NamespacesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Namespaces_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NamespacesServer).List(ctx, req.(*NamespaceFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Namespaces_ServiceDesc is the grpc.ServiceDesc for Namespaces service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Namespaces_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Namespaces",
- HandlerType: (*NamespacesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Namespaces_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "namespace.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/node.platform.pb.go b/proto/platform/tenant/v1/node.platform.pb.go
deleted file mode 100644
index 629eedae..00000000
--- a/proto/platform/tenant/v1/node.platform.pb.go
+++ /dev/null
@@ -1,499 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: node.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Node struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Node UIDP at which this Node resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the Node.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this Node.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // remote_id is the remote ID of this Node.
- RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
- // last_seen tracks the timestamp at which this node was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // Platform/Architecture-level information (10+)
- OperatingSystem string `protobuf:"bytes,10,opt,name=operating_system,json=operatingSystem,proto3" json:"operating_system,omitempty"`
- Architecture string `protobuf:"bytes,11,opt,name=architecture,proto3" json:"architecture,omitempty"`
- // Assorted versions (20+)
- KubeletVersion string `protobuf:"bytes,20,opt,name=kubelet_version,json=kubeletVersion,proto3" json:"kubelet_version,omitempty"`
- ContainerRuntimeVersion string `protobuf:"bytes,21,opt,name=container_runtime_version,json=containerRuntimeVersion,proto3" json:"container_runtime_version,omitempty"`
- KernelVersion string `protobuf:"bytes,22,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"`
- // Node capacity information (30+)
- CpuCapacity string `protobuf:"bytes,30,opt,name=cpu_capacity,json=cpuCapacity,proto3" json:"cpu_capacity,omitempty"`
- MemoryCapacity string `protobuf:"bytes,31,opt,name=memory_capacity,json=memoryCapacity,proto3" json:"memory_capacity,omitempty"`
- PodCapacity string `protobuf:"bytes,32,opt,name=pod_capacity,json=podCapacity,proto3" json:"pod_capacity,omitempty"`
- // Location information (40+)
- Zone string `protobuf:"bytes,40,opt,name=zone,proto3" json:"zone,omitempty"`
- Region string `protobuf:"bytes,41,opt,name=region,proto3" json:"region,omitempty"`
-}
-
-func (x *Node) Reset() {
- *x = Node{}
- if protoimpl.UnsafeEnabled {
- mi := &file_node_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Node) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Node) ProtoMessage() {}
-
-func (x *Node) ProtoReflect() protoreflect.Message {
- mi := &file_node_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Node.ProtoReflect.Descriptor instead.
-func (*Node) Descriptor() ([]byte, []int) {
- return file_node_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Node) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Node) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Node) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Node) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *Node) GetLabels() string {
- if x != nil {
- return x.Labels
- }
- return ""
-}
-
-func (x *Node) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Node) GetOperatingSystem() string {
- if x != nil {
- return x.OperatingSystem
- }
- return ""
-}
-
-func (x *Node) GetArchitecture() string {
- if x != nil {
- return x.Architecture
- }
- return ""
-}
-
-func (x *Node) GetKubeletVersion() string {
- if x != nil {
- return x.KubeletVersion
- }
- return ""
-}
-
-func (x *Node) GetContainerRuntimeVersion() string {
- if x != nil {
- return x.ContainerRuntimeVersion
- }
- return ""
-}
-
-func (x *Node) GetKernelVersion() string {
- if x != nil {
- return x.KernelVersion
- }
- return ""
-}
-
-func (x *Node) GetCpuCapacity() string {
- if x != nil {
- return x.CpuCapacity
- }
- return ""
-}
-
-func (x *Node) GetMemoryCapacity() string {
- if x != nil {
- return x.MemoryCapacity
- }
- return ""
-}
-
-func (x *Node) GetPodCapacity() string {
- if x != nil {
- return x.PodCapacity
- }
- return ""
-}
-
-func (x *Node) GetZone() string {
- if x != nil {
- return x.Zone
- }
- return ""
-}
-
-func (x *Node) GetRegion() string {
- if x != nil {
- return x.Region
- }
- return ""
-}
-
-type NodeList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *NodeList) Reset() {
- *x = NodeList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_node_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NodeList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NodeList) ProtoMessage() {}
-
-func (x *NodeList) ProtoReflect() protoreflect.Message {
- mi := &file_node_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NodeList.ProtoReflect.Descriptor instead.
-func (*NodeList) Descriptor() ([]byte, []int) {
- return file_node_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *NodeList) GetItems() []*Node {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type NodeFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // remote_id is the remote ID of this Node.
- RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- // active_since is the timestamp after which returned nodes
- // should have been active (last seen).
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // name filters on the resource name.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *NodeFilter) Reset() {
- *x = NodeFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_node_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NodeFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NodeFilter) ProtoMessage() {}
-
-func (x *NodeFilter) ProtoReflect() protoreflect.Message {
- mi := &file_node_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NodeFilter.ProtoReflect.Descriptor instead.
-func (*NodeFilter) Descriptor() ([]byte, []int) {
- return file_node_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *NodeFilter) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *NodeFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *NodeFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *NodeFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-var File_node_platform_proto protoreflect.FileDescriptor
-
-var file_node_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
- 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0xb0, 0x04, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73,
- 0x65, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12,
- 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73,
- 0x74, 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72,
- 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27,
- 0x0a, 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61,
- 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x65, 0x72,
- 0x6e, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x70,
- 0x75, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x63, 0x70, 0x75, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a,
- 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
- 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f,
- 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e,
- 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a,
- 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,
- 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x6f,
- 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0a, 0x4e, 0x6f,
- 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f,
- 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d,
- 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
- 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
- 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
- 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
- 0x75, 0x69, 0x64, 0x70, 0x32, 0x6d, 0x0a, 0x05, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x64, 0x0a,
- 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xeb,
- 0x07, 0x10, 0x01, 0x42, 0x6f, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x17, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_node_platform_proto_rawDescOnce sync.Once
- file_node_platform_proto_rawDescData = file_node_platform_proto_rawDesc
-)
-
-func file_node_platform_proto_rawDescGZIP() []byte {
- file_node_platform_proto_rawDescOnce.Do(func() {
- file_node_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_platform_proto_rawDescData)
- })
- return file_node_platform_proto_rawDescData
-}
-
-var file_node_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_node_platform_proto_goTypes = []interface{}{
- (*Node)(nil), // 0: chainguard.platform.tenant.Node
- (*NodeList)(nil), // 1: chainguard.platform.tenant.NodeList
- (*NodeFilter)(nil), // 2: chainguard.platform.tenant.NodeFilter
- (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
-}
-var file_node_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.tenant.Node.last_seen:type_name -> google.protobuf.Timestamp
- 0, // 1: chainguard.platform.tenant.NodeList.items:type_name -> chainguard.platform.tenant.Node
- 3, // 2: chainguard.platform.tenant.NodeFilter.active_since:type_name -> google.protobuf.Timestamp
- 4, // 3: chainguard.platform.tenant.NodeFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 2, // 4: chainguard.platform.tenant.Nodes.List:input_type -> chainguard.platform.tenant.NodeFilter
- 1, // 5: chainguard.platform.tenant.Nodes.List:output_type -> chainguard.platform.tenant.NodeList
- 5, // [5:6] is the sub-list for method output_type
- 4, // [4:5] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_node_platform_proto_init() }
-func file_node_platform_proto_init() {
- if File_node_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_node_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Node); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_node_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_node_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NodeFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_node_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_node_platform_proto_goTypes,
- DependencyIndexes: file_node_platform_proto_depIdxs,
- MessageInfos: file_node_platform_proto_msgTypes,
- }.Build()
- File_node_platform_proto = out.File
- file_node_platform_proto_rawDesc = nil
- file_node_platform_proto_goTypes = nil
- file_node_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/node.platform.proto b/proto/platform/tenant/v1/node.platform.proto
deleted file mode 100644
index 5d50f5e0..00000000
--- a/proto/platform/tenant/v1/node.platform.proto
+++ /dev/null
@@ -1,78 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantNodeProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Nodes {
- rpc List(NodeFilter) returns (NodeList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_NODES_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message Node {
- // id, The Node UIDP at which this Node resides.
- string id = 1;
-
- // name of the Node.
- string name = 2;
-
- // a short description of this Node.
- string description = 3;
-
- // remote_id is the remote ID of this Node.
- string remote_id = 4;
-
- string labels = 5;
-
- // last_seen tracks the timestamp at which this node was last seen.
- google.protobuf.Timestamp last_seen = 6;
-
- // Platform/Architecture-level information (10+)
- string operating_system = 10;
- string architecture = 11;
-
- // Assorted versions (20+)
- string kubelet_version = 20;
- string container_runtime_version = 21;
- string kernel_version = 22;
-
- // Node capacity information (30+)
- string cpu_capacity = 30;
- string memory_capacity = 31;
- string pod_capacity = 32;
-
- // Location information (40+)
- string zone = 40;
- string region = 41;
-}
-
-message NodeList {
- repeated Node items = 1;
-}
-
-message NodeFilter {
- // remote_id is the remote ID of this Node.
- string remote_id = 2;
-
- // active_since is the timestamp after which returned nodes
- // should have been active (last seen).
- google.protobuf.Timestamp active_since = 3;
-
- // name filters on the resource name.
- string name = 4;
-
- chainguard.platform.common.UIDPFilter uidp = 100;
-}
diff --git a/proto/platform/tenant/v1/node.platform_grpc.pb.go b/proto/platform/tenant/v1/node.platform_grpc.pb.go
deleted file mode 100644
index 96f45690..00000000
--- a/proto/platform/tenant/v1/node.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: node.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Nodes_List_FullMethodName = "/chainguard.platform.tenant.Nodes/List"
-)
-
-// NodesClient is the client API for Nodes service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type NodesClient interface {
- List(ctx context.Context, in *NodeFilter, opts ...grpc.CallOption) (*NodeList, error)
-}
-
-type nodesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewNodesClient(cc grpc.ClientConnInterface) NodesClient {
- return &nodesClient{cc}
-}
-
-func (c *nodesClient) List(ctx context.Context, in *NodeFilter, opts ...grpc.CallOption) (*NodeList, error) {
- out := new(NodeList)
- err := c.cc.Invoke(ctx, Nodes_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// NodesServer is the server API for Nodes service.
-// All implementations must embed UnimplementedNodesServer
-// for forward compatibility
-type NodesServer interface {
- List(context.Context, *NodeFilter) (*NodeList, error)
- mustEmbedUnimplementedNodesServer()
-}
-
-// UnimplementedNodesServer must be embedded to have forward compatible implementations.
-type UnimplementedNodesServer struct {
-}
-
-func (UnimplementedNodesServer) List(context.Context, *NodeFilter) (*NodeList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedNodesServer) mustEmbedUnimplementedNodesServer() {}
-
-// UnsafeNodesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to NodesServer will
-// result in compilation errors.
-type UnsafeNodesServer interface {
- mustEmbedUnimplementedNodesServer()
-}
-
-func RegisterNodesServer(s grpc.ServiceRegistrar, srv NodesServer) {
- s.RegisterService(&Nodes_ServiceDesc, srv)
-}
-
-func _Nodes_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NodeFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(NodesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Nodes_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NodesServer).List(ctx, req.(*NodeFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Nodes_ServiceDesc is the grpc.ServiceDesc for Nodes service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Nodes_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Nodes",
- HandlerType: (*NodesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Nodes_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "node.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
index 72625469..4161f4c0 100644
--- a/proto/platform/tenant/v1/test/mock_client.go
+++ b/proto/platform/tenant/v1/test/mock_client.go
@@ -18,10 +18,7 @@ type MockTenantClient struct {
SbomsClient MockSbomsClient
SignaturesClient MockSignaturesClient
PolicyResultsClient MockPolicyResultsClient
- NodesClient MockNodesClient
- NamespacesClient MockNamespacesClient
RisksClient MockRisksClient
- WorkloadsClient MockWorkloadsClient
VulnReportsClient MockVulnReportsClient
AttestationClient MockAttestationsClientt
}
@@ -56,18 +53,6 @@ func (m MockTenantClient) PolicyResults() tenant.PolicyResultsClient {
return &m.PolicyResultsClient
}
-func (m MockTenantClient) Nodes() tenant.NodesClient {
- return &m.NodesClient
-}
-
-func (m MockTenantClient) Namespaces() tenant.NamespacesClient {
- return &m.NamespacesClient
-}
-
-func (m MockTenantClient) Workloads() tenant.WorkloadsClient {
- return &m.WorkloadsClient
-}
-
func (m MockTenantClient) VulnReports() tenant.VulnReportsClient {
return &m.VulnReportsClient
}
diff --git a/proto/platform/tenant/v1/test/mock_namespaces.go b/proto/platform/tenant/v1/test/mock_namespaces.go
deleted file mode 100644
index 5d8a0129..00000000
--- a/proto/platform/tenant/v1/test/mock_namespaces.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.NamespacesClient = (*MockNamespacesClient)(nil)
-
-type MockNamespacesClient struct {
- OnList []NamespacesOnList
-}
-
-type NamespacesOnList struct {
- Given *tenant.NamespaceFilter
- List *tenant.NamespaceList
- Error error
-}
-
-func (m MockNamespacesClient) List(_ context.Context, given *tenant.NamespaceFilter, _ ...grpc.CallOption) (*tenant.NamespaceList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_nodes.go b/proto/platform/tenant/v1/test/mock_nodes.go
deleted file mode 100644
index 4bbcb6f9..00000000
--- a/proto/platform/tenant/v1/test/mock_nodes.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.NodesClient = (*MockNodesClient)(nil)
-
-type MockNodesClient struct {
- OnList []NodesOnList
-}
-
-type NodesOnList struct {
- Given *tenant.NodeFilter
- List *tenant.NodeList
- Error error
-}
-
-func (m MockNodesClient) List(_ context.Context, given *tenant.NodeFilter, _ ...grpc.CallOption) (*tenant.NodeList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_workloads.go b/proto/platform/tenant/v1/test/mock_workloads.go
deleted file mode 100644
index caad4974..00000000
--- a/proto/platform/tenant/v1/test/mock_workloads.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.WorkloadsClient = (*MockWorkloadsClient)(nil)
-
-type MockWorkloadsClient struct {
- OnList []WorkloadsOnList
-}
-
-type WorkloadsOnList struct {
- Given *tenant.WorkloadFilter
- List *tenant.WorkloadList
- Error error
-}
-
-func (m MockWorkloadsClient) List(_ context.Context, given *tenant.WorkloadFilter, _ ...grpc.CallOption) (*tenant.WorkloadList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/workload.platform.pb.go b/proto/platform/tenant/v1/workload.platform.pb.go
deleted file mode 100644
index d1e9eb86..00000000
--- a/proto/platform/tenant/v1/workload.platform.pb.go
+++ /dev/null
@@ -1,436 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: workload.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Workload struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Workload UIDP at which this Workload resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the Workload.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this Workload.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // remote_id is the remote ID of this Workload.
- RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- Labels string `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"`
- ApiVersion string `protobuf:"bytes,6,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
- Kind string `protobuf:"bytes,7,opt,name=kind,proto3" json:"kind,omitempty"`
- // last_seen tracks the timestamp at which this workload was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // owner_id is the remote_id of the Workload that is referenced via a
- // "controller" owner reference by this workload.
- OwnerId string `protobuf:"bytes,9,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
-}
-
-func (x *Workload) Reset() {
- *x = Workload{}
- if protoimpl.UnsafeEnabled {
- mi := &file_workload_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Workload) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Workload) ProtoMessage() {}
-
-func (x *Workload) ProtoReflect() protoreflect.Message {
- mi := &file_workload_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Workload.ProtoReflect.Descriptor instead.
-func (*Workload) Descriptor() ([]byte, []int) {
- return file_workload_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Workload) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Workload) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Workload) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Workload) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *Workload) GetLabels() string {
- if x != nil {
- return x.Labels
- }
- return ""
-}
-
-func (x *Workload) GetApiVersion() string {
- if x != nil {
- return x.ApiVersion
- }
- return ""
-}
-
-func (x *Workload) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
-}
-
-func (x *Workload) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Workload) GetOwnerId() string {
- if x != nil {
- return x.OwnerId
- }
- return ""
-}
-
-type WorkloadList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Workload `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *WorkloadList) Reset() {
- *x = WorkloadList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_workload_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadList) ProtoMessage() {}
-
-func (x *WorkloadList) ProtoReflect() protoreflect.Message {
- mi := &file_workload_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadList.ProtoReflect.Descriptor instead.
-func (*WorkloadList) Descriptor() ([]byte, []int) {
- return file_workload_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *WorkloadList) GetItems() []*Workload {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type WorkloadFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // remote_id is the remote ID of this Workload.
- RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- // active_since is the timestamp after which returned workloads
- // should have been active (last seen).
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // name filters on the resource name.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- // Return only the workloads owned by a particular remote_id.
- OwnerId string `protobuf:"bytes,5,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,100,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *WorkloadFilter) Reset() {
- *x = WorkloadFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_workload_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *WorkloadFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WorkloadFilter) ProtoMessage() {}
-
-func (x *WorkloadFilter) ProtoReflect() protoreflect.Message {
- mi := &file_workload_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use WorkloadFilter.ProtoReflect.Descriptor instead.
-func (*WorkloadFilter) Descriptor() ([]byte, []int) {
- return file_workload_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *WorkloadFilter) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *WorkloadFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *WorkloadFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *WorkloadFilter) GetOwnerId() string {
- if x != nil {
- return x.OwnerId
- }
- return ""
-}
-
-func (x *WorkloadFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-var File_workload_platform_proto protoreflect.FileDescriptor
-
-var file_workload_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f,
- 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x02, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d,
- 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65,
- 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f,
- 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
- 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08,
- 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c,
- 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x22, 0xd7, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74,
- 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69,
- 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e,
- 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
- 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x32, 0x79, 0x0a,
- 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x6c, 0x0a, 0x04, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08,
- 0x12, 0x06, 0x0a, 0x02, 0xb3, 0x09, 0x10, 0x01, 0x42, 0x73, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76,
- 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
- 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
- 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_workload_platform_proto_rawDescOnce sync.Once
- file_workload_platform_proto_rawDescData = file_workload_platform_proto_rawDesc
-)
-
-func file_workload_platform_proto_rawDescGZIP() []byte {
- file_workload_platform_proto_rawDescOnce.Do(func() {
- file_workload_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_workload_platform_proto_rawDescData)
- })
- return file_workload_platform_proto_rawDescData
-}
-
-var file_workload_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_workload_platform_proto_goTypes = []interface{}{
- (*Workload)(nil), // 0: chainguard.platform.tenant.Workload
- (*WorkloadList)(nil), // 1: chainguard.platform.tenant.WorkloadList
- (*WorkloadFilter)(nil), // 2: chainguard.platform.tenant.WorkloadFilter
- (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 4: chainguard.platform.common.UIDPFilter
-}
-var file_workload_platform_proto_depIdxs = []int32{
- 3, // 0: chainguard.platform.tenant.Workload.last_seen:type_name -> google.protobuf.Timestamp
- 0, // 1: chainguard.platform.tenant.WorkloadList.items:type_name -> chainguard.platform.tenant.Workload
- 3, // 2: chainguard.platform.tenant.WorkloadFilter.active_since:type_name -> google.protobuf.Timestamp
- 4, // 3: chainguard.platform.tenant.WorkloadFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 2, // 4: chainguard.platform.tenant.Workloads.List:input_type -> chainguard.platform.tenant.WorkloadFilter
- 1, // 5: chainguard.platform.tenant.Workloads.List:output_type -> chainguard.platform.tenant.WorkloadList
- 5, // [5:6] is the sub-list for method output_type
- 4, // [4:5] is the sub-list for method input_type
- 4, // [4:4] is the sub-list for extension type_name
- 4, // [4:4] is the sub-list for extension extendee
- 0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_workload_platform_proto_init() }
-func file_workload_platform_proto_init() {
- if File_workload_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_workload_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Workload); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_workload_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_workload_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkloadFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_workload_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_workload_platform_proto_goTypes,
- DependencyIndexes: file_workload_platform_proto_depIdxs,
- MessageInfos: file_workload_platform_proto_msgTypes,
- }.Build()
- File_workload_platform_proto = out.File
- file_workload_platform_proto_rawDesc = nil
- file_workload_platform_proto_goTypes = nil
- file_workload_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/workload.platform.proto b/proto/platform/tenant/v1/workload.platform.proto
deleted file mode 100644
index cd8fbe36..00000000
--- a/proto/platform/tenant/v1/workload.platform.proto
+++ /dev/null
@@ -1,71 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantWorkloadProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Workloads {
- rpc List(WorkloadFilter) returns (WorkloadList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_WORKLOADS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message Workload {
- // id, The Workload UIDP at which this Workload resides.
- string id = 1;
-
- // name of the Workload.
- string name = 2;
-
- // a short description of this Workload.
- string description = 3;
-
- // remote_id is the remote ID of this Workload.
- string remote_id = 4;
-
- string labels = 5;
-
- string api_version = 6;
- string kind = 7;
-
- // last_seen tracks the timestamp at which this workload was last seen.
- google.protobuf.Timestamp last_seen = 8;
-
- // owner_id is the remote_id of the Workload that is referenced via a
- // "controller" owner reference by this workload.
- string owner_id = 9;
-}
-
-message WorkloadList {
- repeated Workload items = 1;
-}
-
-message WorkloadFilter {
- // remote_id is the remote ID of this Workload.
- string remote_id = 2;
-
- // active_since is the timestamp after which returned workloads
- // should have been active (last seen).
- google.protobuf.Timestamp active_since = 3;
-
- // name filters on the resource name.
- string name = 4;
-
- // Return only the workloads owned by a particular remote_id.
- string owner_id = 5;
-
-
- chainguard.platform.common.UIDPFilter uidp = 100;
-}
diff --git a/proto/platform/tenant/v1/workload.platform_grpc.pb.go b/proto/platform/tenant/v1/workload.platform_grpc.pb.go
deleted file mode 100644
index 99be2bb1..00000000
--- a/proto/platform/tenant/v1/workload.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: workload.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Workloads_List_FullMethodName = "/chainguard.platform.tenant.Workloads/List"
-)
-
-// WorkloadsClient is the client API for Workloads service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type WorkloadsClient interface {
- List(ctx context.Context, in *WorkloadFilter, opts ...grpc.CallOption) (*WorkloadList, error)
-}
-
-type workloadsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewWorkloadsClient(cc grpc.ClientConnInterface) WorkloadsClient {
- return &workloadsClient{cc}
-}
-
-func (c *workloadsClient) List(ctx context.Context, in *WorkloadFilter, opts ...grpc.CallOption) (*WorkloadList, error) {
- out := new(WorkloadList)
- err := c.cc.Invoke(ctx, Workloads_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// WorkloadsServer is the server API for Workloads service.
-// All implementations must embed UnimplementedWorkloadsServer
-// for forward compatibility
-type WorkloadsServer interface {
- List(context.Context, *WorkloadFilter) (*WorkloadList, error)
- mustEmbedUnimplementedWorkloadsServer()
-}
-
-// UnimplementedWorkloadsServer must be embedded to have forward compatible implementations.
-type UnimplementedWorkloadsServer struct {
-}
-
-func (UnimplementedWorkloadsServer) List(context.Context, *WorkloadFilter) (*WorkloadList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedWorkloadsServer) mustEmbedUnimplementedWorkloadsServer() {}
-
-// UnsafeWorkloadsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to WorkloadsServer will
-// result in compilation errors.
-type UnsafeWorkloadsServer interface {
- mustEmbedUnimplementedWorkloadsServer()
-}
-
-func RegisterWorkloadsServer(s grpc.ServiceRegistrar, srv WorkloadsServer) {
- s.RegisterService(&Workloads_ServiceDesc, srv)
-}
-
-func _Workloads_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(WorkloadFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(WorkloadsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Workloads_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(WorkloadsServer).List(ctx, req.(*WorkloadFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Workloads_ServiceDesc is the grpc.ServiceDesc for Workloads service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Workloads_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Workloads",
- HandlerType: (*WorkloadsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Workloads_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "workload.platform.proto",
-}
From fd94bfaef10f031269deff44470373b86c9b66c9 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 18 Apr 2024 08:57:53 -0700
Subject: [PATCH 24/41] Export b1147ffebcb02da165016a7c8540a138f19dd4a9
Export: b1147ffebcb02da165016a7c8540a138f19dd4a9
---
go.mod | 81 +-
go.sum | 218 ----
policy/parse.go | 144 ---
policy/parse_test.go | 181 ---
policy/validate.go | 103 --
policy/validate_test.go | 194 ----
proto/platform/iam/v1/clients.go | 12 -
proto/platform/iam/v1/doc.go | 1 -
.../iam/v1/policies.platform.event.go | 45 -
proto/platform/iam/v1/policies.platform.pb.go | 1027 -----------------
.../iam/v1/policies.platform.pb.gw.go | 703 -----------
proto/platform/iam/v1/policies.platform.proto | 208 ----
.../iam/v1/policies.platform_grpc.pb.go | 295 -----
proto/platform/iam/v1/test/mock_client.go | 5 -
proto/platform/iam/v1/test/mock_policies.go | 118 --
15 files changed, 3 insertions(+), 3332 deletions(-)
delete mode 100644 policy/parse.go
delete mode 100644 policy/parse_test.go
delete mode 100644 policy/validate.go
delete mode 100644 policy/validate_test.go
delete mode 100644 proto/platform/iam/v1/policies.platform.event.go
delete mode 100644 proto/platform/iam/v1/policies.platform.pb.go
delete mode 100644 proto/platform/iam/v1/policies.platform.pb.gw.go
delete mode 100644 proto/platform/iam/v1/policies.platform.proto
delete mode 100644 proto/platform/iam/v1/policies.platform_grpc.pb.go
delete mode 100644 proto/platform/iam/v1/test/mock_policies.go
diff --git a/go.mod b/go.mod
index d4bf5dfa..6266f39e 100644
--- a/go.mod
+++ b/go.mod
@@ -16,7 +16,6 @@ require (
github.com/microcosm-cc/bluemonday v1.0.26
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/russross/blackfriday/v2 v2.1.0
- github.com/sigstore/policy-controller v0.8.4
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
golang.org/x/oauth2 v0.19.0
@@ -26,128 +25,54 @@ require (
google.golang.org/protobuf v1.33.0
k8s.io/api v0.29.1
k8s.io/apimachinery v0.29.1
- knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845
- sigs.k8s.io/yaml v1.4.0
)
require (
- cloud.google.com/go/compute v1.25.0 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v1.1.6 // indirect
- cloud.google.com/go/kms v1.15.8 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 // indirect
- github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
- github.com/aws/aws-sdk-go v1.51.6 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.27.9 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.17.9 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 // indirect
- github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 // indirect
- github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 // indirect
github.com/aws/smithy-go v1.20.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blendle/zapdriver v1.3.1 // indirect
- github.com/cenkalti/backoff/v3 v3.2.2 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
- github.com/evanphx/json-patch/v5 v5.7.0 // indirect
- github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-jose/go-jose/v4 v4.0.1 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonreference v0.21.0 // indirect
- github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
- github.com/google/go-containerregistry v0.19.1 // indirect
github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.3 // indirect
github.com/gorilla/css v1.0.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
- github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
- github.com/hashicorp/go-rootcerts v1.0.2 // indirect
- github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect
- github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
- github.com/hashicorp/go-sockaddr v1.0.6 // indirect
- github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
- github.com/hashicorp/vault/api v1.12.2 // indirect
- github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jellydator/ttlcache/v3 v3.2.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kelseyhightower/envconfig v1.4.0 // indirect
- github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.19.0 // indirect
github.com/prometheus/client_model v0.6.0 // indirect
github.com/prometheus/common v0.51.1 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
- github.com/ryanuber/go-glob v1.0.0 // indirect
- github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect
- github.com/sigstore/sigstore v1.8.3 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3 // indirect
- github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3 // indirect
- github.com/spf13/cobra v1.8.0 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/theupdateframework/go-tuf v0.7.0 // indirect
- github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
- go.opencensus.io v0.24.0 // indirect
+ github.com/stretchr/testify v1.9.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/sdk v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/net v0.22.0 // indirect
- golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.19.0 // indirect
- gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/api v0.172.0 // indirect
- google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
- gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/client-go v0.29.1 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
+ knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/release-utils v0.7.7 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
)
diff --git a/go.sum b/go.sum
index e5cfb940..6559474e 100644
--- a/go.sum
+++ b/go.sum
@@ -3,57 +3,9 @@ chainguard.dev/go-grpc-kit v0.17.2/go.mod h1:uZTFtFzAGyVFHhJexiHbna4N5rHQU7aUXPw
chainguard.dev/go-oidctest v0.3.1 h1:Q1OvIVIcl+i0hqgmrXZLeDhSjtDjbnLEBASoTbhyuBY=
chainguard.dev/go-oidctest v0.3.1/go.mod h1:TDN6MPJ6BEzWtorS9/dHzzGiaBpPRnRONv2SE0mqitU=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
-cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
-cloud.google.com/go/compute v1.25.0 h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU=
-cloud.google.com/go/compute v1.25.0/go.mod h1:GR7F0ZPZH8EhChlMo9FkLd7eUTwEymjqQagxzilIxIE=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
-cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
-cloud.google.com/go/kms v1.15.8 h1:szIeDCowID8th2i8XE4uRev5PMxQFqW+JjwYxL9h6xs=
-cloud.google.com/go/kms v1.15.8/go.mod h1:WoUHcDjD9pluCg7pNds131awnH429QGvRM3N/4MyoVs=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0 h1:DRiANoJTiW6obBQe3SqZizkuV1PEgfiiGivmVocDy64=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.1.0/go.mod h1:qLIye2hwb/ZouqhpSD9Zn3SJipvpEnz1Ywl3VUk9Y0s=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
-github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/aws/aws-sdk-go v1.51.6 h1:Ld36dn9r7P9IjU8WZSaswQ8Y/XUCRpewim5980DwYiU=
-github.com/aws/aws-sdk-go v1.51.6/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/aws/aws-sdk-go-v2 v1.26.0 h1:/Ce4OCiM3EkpW7Y+xUnfAFpchU78K7/Ug01sZni9PgA=
github.com/aws/aws-sdk-go-v2 v1.26.0/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I=
-github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg=
-github.com/aws/aws-sdk-go-v2/config v1.27.9/go.mod h1:dK1FQfpwpql83kbD873E9vz4FyAxuJtR22wzoXn3qq0=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.9 h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMNQVNtNdUqf6cItao=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4 h1:0ScVK/4qZ8CIW0k8jOeFVsyS/sAiXpYxRBLolMkuLQM=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.4/go.mod h1:84KyjNZdHC6QZW08nfHI6yZgPd+qRgaWcYsyLUo3QY8=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4 h1:sHmMWWX5E7guWEFQ9SVo6A3S4xpPrWnd77a6y4WM6PU=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.4/go.mod h1:WjpDrhWisWOIoS9n3nk67A3Ll1vfULJ9Kq6h29HTD48=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6 h1:b+E7zIUHMmcB4Dckjpkapoy47W6C9QBv/zoUP+Hn8Kc=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.6/go.mod h1:S2fNV0rxrP78NhPbCZeQgY8H9jdDMeGtwcfZIRxzBqU=
-github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 h1:yS0JkEdV6h9JOo8sy2JSpjX+i7vsKifU8SIeHrqiDhU=
-github.com/aws/aws-sdk-go-v2/service/kms v1.30.0/go.mod h1:+I8VUUSVD4p5ISQtzpgSva4I8cJ4SQ4b1dcBcof7O+g=
-github.com/aws/aws-sdk-go-v2/service/sso v1.20.3 h1:mnbuWHOcM70/OFUlZZ5rcdfA8PflGXXiefU/O+1S3+8=
-github.com/aws/aws-sdk-go-v2/service/sso v1.20.3/go.mod h1:5HFu51Elk+4oRBZVxmHrSds5jFXmFj8C3w7DVF2gnrs=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 h1:uLq0BKatTmDzWa/Nu4WO0M1AaQDaPpwTKAeByEc6WFM=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs=
-github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg=
-github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0=
github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw=
github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
@@ -66,8 +18,6 @@ github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJR
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE=
github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc=
-github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=
-github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -77,31 +27,16 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cloudevents/sdk-go/v2 v2.15.2 h1:54+I5xQEnI73RBhWHxbI1XJcqOFOVJN85vb41+8mHUc=
github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6tjmaQBSvxcv4uE=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
-github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU=
github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac=
-github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
-github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
-github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
-github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc=
-github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
-github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
-github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
-github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
-github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U=
@@ -113,61 +48,25 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
-github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
-github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
-github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
-github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
-github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
-github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
-github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
-github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY=
-github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA=
-github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
@@ -176,40 +75,6 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c9
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
-github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
-github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs=
-github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
-github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
-github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=
-github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
-github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
-github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc=
-github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0=
-github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
-github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
-github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I=
-github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
-github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
-github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
-github.com/hashicorp/vault/api v1.12.2 h1:7YkCTE5Ni90TcmYHDBExdt4WGJxhpzaHqR6uGbQb/rE=
-github.com/hashicorp/vault/api v1.12.2/go.mod h1:LSGf1NGT1BnvFFnKVtnvcaLBM2Lz+gJdpL6HUYed8KE=
-github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
-github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jellydator/ttlcache/v3 v3.2.0 h1:6lqVJ8X3ZaUwvzENqPAobDsXNExfUJd61u++uW8a3LE=
-github.com/jellydator/ttlcache/v3 v3.2.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
-github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
-github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
-github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs=
-github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
@@ -224,38 +89,18 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
-github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 h1:WGrKdjHtWC67RX96eTkYD2f53NDHhrq/7robWTAfk4s=
-github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491/go.mod h1:o158RFmdEbYyIZmXAbrvmJWesbyxlLKee6X64VPVuOc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
-github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
-github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
-github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
-github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -277,61 +122,28 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
-github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
-github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA=
-github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU=
-github.com/sigstore/policy-controller v0.8.4 h1:1ieS2W4GfcWfxvdE7lbfZlgW2dSnUinae2OoUM5/7Vg=
-github.com/sigstore/policy-controller v0.8.4/go.mod h1:jQtLtLpcwzIuRrCtNjWLWfSQlI4ompYOU9CW5dPi6t8=
-github.com/sigstore/sigstore v1.8.3 h1:G7LVXqL+ekgYtYdksBks9B38dPoIsbscjQJX/MGWkA4=
-github.com/sigstore/sigstore v1.8.3/go.mod h1:mqbTEariiGA94cn6G3xnDiV6BD8eSLdL/eA7bvJ0fVs=
-github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3 h1:LTfPadUAo+PDRUbbdqbeSl2OuoFQwUFTnJ4stu+nwWw=
-github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.3/go.mod h1:QV/Lxlxm0POyhfyBtIbTWxNeF18clMlkkyL9mu45y18=
-github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3 h1:xgbPRCr2npmmsuVVteJqi/ERw9+I13Wou7kq0Yk4D8g=
-github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.3/go.mod h1:G4+I83FILPX6MtnoaUdmv/bRGEVtR3JdLeJa/kXdk/0=
-github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3 h1:vDl2fqPT0h3D/k6NZPlqnKFd1tz3335wm39qjvpZNJc=
-github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.3/go.mod h1:9uOJXbXEXj+M6QjMKH5PaL5WDMu43rHfbIMgXzA8eKI=
-github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3 h1:h9G8j+Ds21zqqulDbA/R/ft64oQQIyp8S7wJYABYSlg=
-github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.3/go.mod h1:zgCeHOuqF6k7A7TTEvftcA9V3FRzB7mrPtHOhXAQBnc=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
-github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
-github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
-github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
-github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
-go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
@@ -376,7 +188,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
@@ -393,8 +204,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -416,8 +225,6 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
@@ -445,18 +252,11 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
-gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
-google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
-google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E=
google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
@@ -467,28 +267,16 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
-gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -506,20 +294,14 @@ k8s.io/api v0.29.1 h1:DAjwWX/9YT7NQD4INu49ROJuZAAAP/Ijki48GUPzxqw=
k8s.io/api v0.29.1/go.mod h1:7Kl10vBRUXhnQQI8YR/R327zXC8eJ7887/+Ybta+RoQ=
k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc=
k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU=
-k8s.io/client-go v0.29.1 h1:19B/+2NGEwnFLzt0uB5kNJnfTsbV8w6TgQRz9l7ti7A=
-k8s.io/client-go v0.29.1/go.mod h1:TDG/psL9hdet0TI9mGyHJSgRkW3H9JZk2dNEUS7bRks=
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=
-k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 h1:NJm46LR4AeO03E0H7B+TYTkelTSnsswktpIAaK1pkTg=
knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845/go.mod h1:9UXGl+Sue7Am1/mbvLimpPZwQlOkbjAMMIenH60pVJ4=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/release-utils v0.7.7 h1:JKDOvhCk6zW8ipEOkpTGDH/mW3TI+XqtPp16aaQ79FU=
-sigs.k8s.io/release-utils v0.7.7/go.mod h1:iU7DGVNi3umZJ8q6aHyUFzsDUIaYwNnNKGHo3YE5E3s=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
diff --git a/policy/parse.go b/policy/parse.go
deleted file mode 100644
index 206c1a68..00000000
--- a/policy/parse.go
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package policy
-
-import (
- "context"
- "encoding/json"
- "fmt"
- "strings"
-
- "github.com/sigstore/policy-controller/pkg/apis/glob"
- "github.com/sigstore/policy-controller/pkg/apis/policy/v1alpha1"
- "github.com/sigstore/policy-controller/pkg/apis/policy/v1beta1"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- "k8s.io/apimachinery/pkg/runtime"
- "k8s.io/apimachinery/pkg/runtime/schema"
- "knative.dev/pkg/apis"
- "sigs.k8s.io/yaml"
-)
-
-// Parse decodes a provided YAML document containing zero or more objects into
-// a collection of unstructured.Unstructured objects.
-func Parse(_ context.Context, document string) ([]*unstructured.Unstructured, error) {
- docs := strings.Split(document, "\n---\n")
-
- objs := make([]*unstructured.Unstructured, 0, len(docs))
- for i, doc := range docs {
- doc = strings.TrimSpace(doc)
- if doc == "" {
- continue
- }
- var obj unstructured.Unstructured
- if err := yaml.Unmarshal([]byte(doc), &obj); err != nil {
- return nil, fmt.Errorf("decoding object[%d]: %w", i, err)
- }
- if obj.GetAPIVersion() == "" {
- return nil, apis.ErrMissingField("apiVersion").ViaIndex(i)
- }
- if obj.GetName() == "" {
- return nil, apis.ErrMissingField("metadata.name").ViaIndex(i)
- }
- objs = append(objs, &obj)
- }
- return objs, nil
-}
-
-// ParseClusterImagePolicies returns ClusterImagePolicy objects found in the
-// policy document.
-func ParseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, warns error, err error) {
- if warns, err = Validate(ctx, document); err != nil {
- return nil, warns, err
- }
-
- cips, err = parseClusterImagePolicies(ctx, document)
- if err != nil {
- return nil, warns, err
- }
-
- return cips, warns, nil
-}
-
-// UnsafeParseClusterImagePolicies returns ClusterImagePolicy objects found in the
-// policy document, without validating if the policy is valid.
-func UnsafeParseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, err error) {
- return parseClusterImagePolicies(ctx, document)
-}
-
-// CoversImage parses the given policy document, and checks if the target image
-// matches any of the image globs included in the policy.
-func CoversImage(ctx context.Context, document, target string) (bool, error) {
- cips, _, err := ParseClusterImagePolicies(ctx, document)
- if err != nil {
- return false, err
- }
- if len(cips) != 1 {
- return false, fmt.Errorf("document must contain exactly one ClusterImagePolicy (%d found)", len(cips))
- }
-
- for _, image := range cips[0].Spec.Images {
- ok, err := glob.Match(image.Glob, target)
- if err != nil {
- return false, err
- }
- if ok {
- return true, nil
- }
- }
- return false, nil
-}
-
-func parseClusterImagePolicies(ctx context.Context, document string) (cips []*v1beta1.ClusterImagePolicy, err error) {
- ol, err := Parse(ctx, document)
- if err != nil {
- return nil, err
- }
-
- cips = make([]*v1beta1.ClusterImagePolicy, 0)
- for _, obj := range ol {
- gv, err := schema.ParseGroupVersion(obj.GetAPIVersion())
- if err != nil {
- // Practically unstructured.Unstructured won't let this happen.
- return nil, fmt.Errorf("error parsing apiVersion of: %w", err)
- }
-
- cip := &v1beta1.ClusterImagePolicy{}
-
- switch gv.WithKind(obj.GetKind()) {
- case v1alpha1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
- v1a1 := &v1alpha1.ClusterImagePolicy{}
- if err := convert(obj, v1a1); err != nil {
- return nil, err
- }
- if err := v1a1.ConvertTo(ctx, cip); err != nil {
- return nil, err
- }
-
- case v1beta1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
- // This is allowed, but we should convert things.
- if err := convert(obj, cip); err != nil {
- return nil, err
- }
-
- default:
- continue
- }
-
- cips = append(cips, cip)
- }
- return cips, nil
-}
-
-func convert(from interface{}, to runtime.Object) error {
- bs, err := json.Marshal(from)
- if err != nil {
- return fmt.Errorf("Marshal() = %w", err)
- }
- if err := json.Unmarshal(bs, to); err != nil {
- return fmt.Errorf("Unmarshal() = %w", err)
- }
- return nil
-}
diff --git a/policy/parse_test.go b/policy/parse_test.go
deleted file mode 100644
index e6345ea3..00000000
--- a/policy/parse_test.go
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package policy
-
-import (
- "context"
- "errors"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- "knative.dev/pkg/apis"
-)
-
-func TestParse(t *testing.T) {
- tests := []struct {
- name string
- doc string
- want []*unstructured.Unstructured
- wantErr error
- }{{
- name: "good single object",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec: {}
-`,
- want: []*unstructured.Unstructured{{
- Object: map[string]interface{}{
- "apiVersion": "policy.sigstore.dev/v1beta1",
- "kind": "ClusterImagePolicy",
- "metadata": map[string]interface{}{
- "name": "blah",
- },
- "spec": map[string]interface{}{},
- },
- }},
- }, {
- name: "good multi-object",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec: {}
----
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: foo
-spec: {}
----
-
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: bar
-spec: {}
-`,
- want: []*unstructured.Unstructured{{
- Object: map[string]interface{}{
- "apiVersion": "policy.sigstore.dev/v1beta1",
- "kind": "ClusterImagePolicy",
- "metadata": map[string]interface{}{
- "name": "blah",
- },
- "spec": map[string]interface{}{},
- },
- }, {
- Object: map[string]interface{}{
- "apiVersion": "policy.sigstore.dev/v1beta1",
- "kind": "ClusterImagePolicy",
- "metadata": map[string]interface{}{
- "name": "foo",
- },
- "spec": map[string]interface{}{},
- },
- }, {
- Object: map[string]interface{}{
- "apiVersion": "policy.sigstore.dev/v1beta1",
- "kind": "ClusterImagePolicy",
- "metadata": map[string]interface{}{
- "name": "bar",
- },
- "spec": map[string]interface{}{},
- },
- }},
- }, {
- name: "bad missing apiVersion",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec: {}
----
-# Missing: apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: foo
-spec: {}
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: bar
-spec: {}
-`,
- wantErr: apis.ErrMissingField("[1].apiVersion"),
- }, {
- name: "bad missing kind",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec: {}
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: foo
-spec: {}
----
-apiVersion: policy.sigstore.dev/v1beta1
-# Missing: kind: ClusterImagePolicy
-metadata:
- name: bar
-spec: {}
-`,
- wantErr: errors.New(`decoding object[2]: error unmarshaling JSON: while decoding JSON: Object 'Kind' is missing in '{"apiVersion":"policy.sigstore.dev/v1beta1","metadata":{"name":"bar"},"spec":{}}'`),
- }, {
- name: "bad missing apiVersion",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- # Missing: name: blah
-sp dec: {}
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: foo
-spec: {}
----
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: bar
-spec: {}
-`,
- wantErr: apis.ErrMissingField("[0].metadata.name"),
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- got, gotErr := Parse(context.Background(), test.doc)
-
- switch {
- case (gotErr != nil) != (test.wantErr != nil):
- t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
- case gotErr != nil && gotErr.Error() != test.wantErr.Error():
- t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
- case gotErr != nil:
- return // This was an error test.
- }
-
- if diff := cmp.Diff(got, test.want); diff != "" {
- t.Errorf("Parse (-got, +want) = %s", diff)
- }
- })
- }
-}
diff --git a/policy/validate.go b/policy/validate.go
deleted file mode 100644
index a785fe5b..00000000
--- a/policy/validate.go
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package policy
-
-import (
- "bytes"
- "context"
- "encoding/json"
- "errors"
- "fmt"
-
- "github.com/sigstore/policy-controller/pkg/apis/policy/v1alpha1"
- "github.com/sigstore/policy-controller/pkg/apis/policy/v1beta1"
- corev1 "k8s.io/api/core/v1"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- "knative.dev/pkg/apis"
-)
-
-var (
- // ErrEmptyDocument is the error returned when no document body is
- // specified.
- ErrEmptyDocument = errors.New("document is required to create policy")
-
- // ErrUnknownType is the error returned when a type contained in the policy
- // is unrecognized.
- ErrUnknownType = errors.New("unknown type")
-)
-
-// Validate decodes a provided YAML document containing zero or more objects
-// and performs limited validation on them.
-func Validate(ctx context.Context, document string) (warns error, err error) {
- if len(document) == 0 {
- return nil, ErrEmptyDocument
- }
-
- uol, err := Parse(ctx, document)
- if err != nil {
- return nil, err
- }
-
- for i, uo := range uol {
- switch uo.GroupVersionKind() {
- case v1beta1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
- if warns, err = validate(ctx, uo, &v1beta1.ClusterImagePolicy{}); err != nil {
- return
- }
-
- case v1alpha1.SchemeGroupVersion.WithKind("ClusterImagePolicy"):
- if warns, err = validate(ctx, uo, &v1alpha1.ClusterImagePolicy{}); err != nil {
- return
- }
-
- case corev1.SchemeGroupVersion.WithKind("Secret"):
- if uo.GetNamespace() != "cosign-system" {
- return warns, apis.ErrInvalidValue(uo.GetNamespace(), "metadata.namespace").ViaIndex(i)
- }
- // Any additional validation worth performing? Should we check the
- // schema of the secret matches the expectations of cosigned?
-
- default:
- return warns, fmt.Errorf("%w: %v", ErrUnknownType, uo.GroupVersionKind())
- }
- }
- return warns, nil
-}
-
-type crd interface {
- apis.Validatable
- apis.Defaultable
-}
-
-func validate(ctx context.Context, uo *unstructured.Unstructured, v crd) (warns error, err error) {
- b, err := json.Marshal(uo)
- if err != nil {
- return nil, fmt.Errorf("unable to marshal: %w", err)
- }
-
- dec := json.NewDecoder(bytes.NewBuffer(b))
- dec.DisallowUnknownFields()
- if err := dec.Decode(v); err != nil {
- return nil, fmt.Errorf("unable to unmarshal: %w", err)
- }
-
- // Apply defaulting to simulate the defaulting webhook that runs prior
- // to validation.
- v.SetDefaults(ctx)
-
- // We can't just return v.Validate(ctx) because of Go's typed nils.
- // nolint:revive
- if ve := v.Validate(ctx); ve != nil {
- // Separate validation warnings from errors so the caller can discern between them.
- if warnFE := ve.Filter(apis.WarningLevel); warnFE != nil {
- warns = warnFE
- }
- if errorFE := ve.Filter(apis.ErrorLevel); errorFE != nil {
- err = errorFE
- }
- }
- return
-}
diff --git a/policy/validate_test.go b/policy/validate_test.go
deleted file mode 100644
index 15df0a31..00000000
--- a/policy/validate_test.go
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package policy
-
-import (
- "context"
- "errors"
- "testing"
-
- policycontrollerconfig "github.com/sigstore/policy-controller/pkg/config"
- "knative.dev/pkg/apis"
-)
-
-func TestValidate(t *testing.T) {
- tests := []struct {
- name string
- doc string
- wantWarns error
- wantErr error
- allowEmptyAuthorities bool
- }{{
- name: "good single object",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
- authorities:
- - keyless:
- identities:
- - issuer: https://issuer.example.com
- subject: foo@example.com
- url: https://fulcio.sigstore.dev
-`,
- wantErr: nil,
- }, {
- name: "good CIP and Secret",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
- authorities:
- - keyless:
- identities:
- - issuer: https://issuer.example.com
- subject: foo@example.com
- url: https://fulcio.sigstore.dev
----
-apiVersion: v1
-kind: Secret
-metadata:
- name: foo
- namespace: cosign-system
-stringData:
- foo: bar
-`,
- wantErr: nil,
- }, {
- name: "bad secret namespace",
- doc: `
-apiVersion: v1
-kind: Secret
-metadata:
- name: foo
- namespace: something-system
-stringData:
- foo: bar
-`,
- wantErr: errors.New(`invalid value: something-system: [0].metadata.namespace`),
- }, {
- name: "bad image policy",
- doc: `
-apiVersion: policy.sigstore.dev/v1alpha1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
- authorities:
- - key: {}
-`,
- wantErr: apis.ErrMissingOneOf("data", "kms", "secretref").ViaField("key").ViaFieldIndex("authorities", 0).ViaField("spec"),
- }, {
- name: "empty document",
- doc: ``,
- wantErr: ErrEmptyDocument,
- }, {
- name: "object missing kind",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-# Missing: kind: ClusterImagePolicy
-metadata:
- name: blah
-spec: {}
-`,
- wantErr: errors.New(`decoding object[0]: error unmarshaling JSON: while decoding JSON: Object 'Kind' is missing in '{"apiVersion":"policy.sigstore.dev/v1beta1","metadata":{"name":"blah"},"spec":{}}'`),
- }, {
- name: "unknown field",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- asdf: dfsadf
-`,
- wantErr: errors.New(`unable to unmarshal: json: unknown field "asdf"`),
- }, {
- name: "unknown type",
- doc: `
-apiVersion: unknown.dev/v1
-kind: OtherPolicy
-metadata:
- name: blah
-spec: {}
-`,
- wantErr: errors.New(`unknown type: unknown.dev/v1, Kind=OtherPolicy`),
- }, {
- name: "error - missing field",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
- authorities:
- - keyless:
- url: https://fulcio.sigstore.dev
-`,
- wantWarns: nil,
- wantErr: errors.New("missing field(s): spec.authorities[0].keyless.identities"),
- },
- {
- name: "admit - missing authorities",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
-`,
- wantErr: nil,
- allowEmptyAuthorities: true,
- }, {
- name: "deny - missing authorities",
- doc: `
-apiVersion: policy.sigstore.dev/v1beta1
-kind: ClusterImagePolicy
-metadata:
- name: blah
-spec:
- images:
- - glob: '*'
-`,
- wantErr: errors.New("missing field(s): spec.authorities"),
- }}
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- testContext := context.Background()
- if test.allowEmptyAuthorities {
- testContext = policycontrollerconfig.ToContext(testContext, &policycontrollerconfig.PolicyControllerConfig{FailOnEmptyAuthorities: false})
- }
- gotWarns, gotErr := Validate(testContext, test.doc)
- if (gotErr != nil) != (test.wantErr != nil) {
- t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
- }
- if (gotWarns != nil) != (test.wantWarns != nil) {
- t.Fatalf("Parse() = %v, wanted %v", gotWarns, test.wantWarns)
- }
- if gotErr != nil && gotErr.Error() != test.wantErr.Error() {
- t.Fatalf("Parse() = %v, wanted %v", gotErr, test.wantErr)
- }
- if gotWarns != nil && gotWarns.Error() != test.wantWarns.Error() {
- t.Fatalf("Parse() = %v, wanted %v", gotWarns, test.wantWarns)
- }
- })
- }
-}
diff --git a/proto/platform/iam/v1/clients.go b/proto/platform/iam/v1/clients.go
index f27fab3d..89e0fbd2 100644
--- a/proto/platform/iam/v1/clients.go
+++ b/proto/platform/iam/v1/clients.go
@@ -33,8 +33,6 @@ type Clients interface {
Subscriptions() events.SubscriptionsClient
- Policies() PoliciesClient
-
Close() error
}
@@ -76,8 +74,6 @@ func NewClients(ctx context.Context, iamURL string, token string) (Clients, erro
subscription: events.NewSubscriptionsClient(conn),
- policy: NewPoliciesClient(conn),
-
conn: conn,
}, nil
}
@@ -96,8 +92,6 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
subscription: events.NewSubscriptionsClient(conn),
- policy: NewPoliciesClient(conn),
-
// conn is not set, this client struct does not own closing it.
}
}
@@ -115,8 +109,6 @@ type clients struct {
subscription events.SubscriptionsClient
- policy PoliciesClient
-
conn *grpc.ClientConn
}
@@ -156,10 +148,6 @@ func (c *clients) Subscriptions() events.SubscriptionsClient {
return c.subscription
}
-func (c *clients) Policies() PoliciesClient {
- return c.policy
-}
-
func (c *clients) Close() error {
if c.conn != nil {
return c.conn.Close()
diff --git a/proto/platform/iam/v1/doc.go b/proto/platform/iam/v1/doc.go
index c65b13e5..8fccce6d 100644
--- a/proto/platform/iam/v1/doc.go
+++ b/proto/platform/iam/v1/doc.go
@@ -10,7 +10,6 @@ SPDX-License-Identifier: Apache-2.0
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. role_binding.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. account_associations.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. policies.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. identity_providers.platform.proto
// Package v1 contains the v1 GRPC client and server definitions
diff --git a/proto/platform/iam/v1/policies.platform.event.go b/proto/platform/iam/v1/policies.platform.event.go
deleted file mode 100644
index b34d781a..00000000
--- a/proto/platform/iam/v1/policies.platform.event.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Policy) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Policy) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeletePolicyRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeletePolicyRequest) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
-func (x *DeletePolicyRequest) CloudEventsRedact() interface{} {
- return nil
-}
diff --git a/proto/platform/iam/v1/policies.platform.pb.go b/proto/platform/iam/v1/policies.platform.pb.go
deleted file mode 100644
index 60a2ca7c..00000000
--- a/proto/platform/iam/v1/policies.platform.pb.go
+++ /dev/null
@@ -1,1027 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: policies.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type CreatePolicyRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group UIDP path under which the new policy is associated.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Policy is the policy to create;
- Policy *Policy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
-}
-
-func (x *CreatePolicyRequest) Reset() {
- *x = CreatePolicyRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreatePolicyRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreatePolicyRequest) ProtoMessage() {}
-
-func (x *CreatePolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreatePolicyRequest.ProtoReflect.Descriptor instead.
-func (*CreatePolicyRequest) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CreatePolicyRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreatePolicyRequest) GetPolicy() *Policy {
- if x != nil {
- return x.Policy
- }
- return nil
-}
-
-type Policy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is identifier of this specific policy.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human readable name of policy.
- // This field is populated from the document and any existing value will be ignored for Create/Update.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human readable description of policy.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // document, YAML encoded policy document.
- Document string `protobuf:"bytes,4,opt,name=document,proto3" json:"document,omitempty"`
- // created_at is the timestamp for when the policy was created.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // updated_at is the timestamp when the current version of the policy was last updated.
- UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
- // enforced_version contains information about the enforced version of this policy.
- // When used as a return value, Policy.name, Policy.description, and Policy.document are all copies of
- // the respective fields in enforced_version for backwards compatibility. enforced_version may be empty for
- // legacy policies without versions.
- // When used for Create or Update, set enforced_version.label to set an optional version label.
- EnforcedVersion *PolicyVersion `protobuf:"bytes,7,opt,name=enforced_version,json=enforcedVersion,proto3" json:"enforced_version,omitempty"`
-}
-
-func (x *Policy) Reset() {
- *x = Policy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Policy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Policy) ProtoMessage() {}
-
-func (x *Policy) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
-func (*Policy) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Policy) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Policy) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Policy) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Policy) GetDocument() string {
- if x != nil {
- return x.Document
- }
- return ""
-}
-
-func (x *Policy) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *Policy) GetUpdatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.UpdatedAt
- }
- return nil
-}
-
-func (x *Policy) GetEnforcedVersion() *PolicyVersion {
- if x != nil {
- return x.EnforcedVersion
- }
- return nil
-}
-
-type PolicyAuthor struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the UID of the author identity.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // email is the email address of the author, if known.
- Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
-}
-
-func (x *PolicyAuthor) Reset() {
- *x = PolicyAuthor{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyAuthor) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyAuthor) ProtoMessage() {}
-
-func (x *PolicyAuthor) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyAuthor.ProtoReflect.Descriptor instead.
-func (*PolicyAuthor) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *PolicyAuthor) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *PolicyAuthor) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-type PolicyList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Policy `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *PolicyList) Reset() {
- *x = PolicyList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyList) ProtoMessage() {}
-
-func (x *PolicyList) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyList.ProtoReflect.Descriptor instead.
-func (*PolicyList) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *PolicyList) GetItems() []*Policy {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type PolicyFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filers records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // name is the exact name of the record.
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *PolicyFilter) Reset() {
- *x = PolicyFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyFilter) ProtoMessage() {}
-
-func (x *PolicyFilter) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyFilter.ProtoReflect.Descriptor instead.
-func (*PolicyFilter) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *PolicyFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *PolicyFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *PolicyFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type DeletePolicyRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeletePolicyRequest) Reset() {
- *x = DeletePolicyRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeletePolicyRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeletePolicyRequest) ProtoMessage() {}
-
-func (x *DeletePolicyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeletePolicyRequest.ProtoReflect.Descriptor instead.
-func (*DeletePolicyRequest) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *DeletePolicyRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type PolicyVersion struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the identifier of this specific policy version.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name, human-readable name of policy.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // description, human-readable description of policy.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // document, YAML encoded policy document.
- Document string `protobuf:"bytes,4,opt,name=document,proto3" json:"document,omitempty"`
- // author is information about the identity that created/updated this version of the policy, if known.
- Author *PolicyAuthor `protobuf:"bytes,5,opt,name=author,proto3" json:"author,omitempty"`
- // created_at is the timestamp from when this version was created.
- CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
- // label is a human-readable identifier for this version of the policy.
- Label string `protobuf:"bytes,7,opt,name=label,proto3" json:"label,omitempty"`
-}
-
-func (x *PolicyVersion) Reset() {
- *x = PolicyVersion{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyVersion) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyVersion) ProtoMessage() {}
-
-func (x *PolicyVersion) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyVersion.ProtoReflect.Descriptor instead.
-func (*PolicyVersion) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *PolicyVersion) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *PolicyVersion) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *PolicyVersion) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *PolicyVersion) GetDocument() string {
- if x != nil {
- return x.Document
- }
- return ""
-}
-
-func (x *PolicyVersion) GetAuthor() *PolicyAuthor {
- if x != nil {
- return x.Author
- }
- return nil
-}
-
-func (x *PolicyVersion) GetCreatedAt() *timestamppb.Timestamp {
- if x != nil {
- return x.CreatedAt
- }
- return nil
-}
-
-func (x *PolicyVersion) GetLabel() string {
- if x != nil {
- return x.Label
- }
- return ""
-}
-
-type ActivateVersionRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // version_id is the identifier of the policy version to enforce.
- VersionId string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
-}
-
-func (x *ActivateVersionRequest) Reset() {
- *x = ActivateVersionRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ActivateVersionRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ActivateVersionRequest) ProtoMessage() {}
-
-func (x *ActivateVersionRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ActivateVersionRequest.ProtoReflect.Descriptor instead.
-func (*ActivateVersionRequest) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *ActivateVersionRequest) GetVersionId() string {
- if x != nil {
- return x.VersionId
- }
- return ""
-}
-
-type ListVersionsRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // policy_id is the identifier of the policy to list versions of.
- PolicyId string `protobuf:"bytes,1,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
-}
-
-func (x *ListVersionsRequest) Reset() {
- *x = ListVersionsRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListVersionsRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListVersionsRequest) ProtoMessage() {}
-
-func (x *ListVersionsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListVersionsRequest.ProtoReflect.Descriptor instead.
-func (*ListVersionsRequest) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *ListVersionsRequest) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
- }
- return ""
-}
-
-type PolicyVersionList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*PolicyVersion `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *PolicyVersionList) Reset() {
- *x = PolicyVersionList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policies_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyVersionList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyVersionList) ProtoMessage() {}
-
-func (x *PolicyVersionList) ProtoReflect() protoreflect.Message {
- mi := &file_policies_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyVersionList.ProtoReflect.Descriptor instead.
-func (*PolicyVersionList) Descriptor() ([]byte, []int) {
- return file_policies_platform_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *PolicyVersionList) GetItems() []*PolicyVersion {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-var File_policies_platform_proto protoreflect.FileDescriptor
-
-var file_policies_platform_proto_rawDesc = []byte{
- 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
- 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x73, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xbb, 0x02,
- 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a,
- 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f,
- 0x72, 0x63, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f,
- 0x72, 0x63, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x0c, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
- 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69,
- 0x6c, 0x22, 0x43, 0x0a, 0x0a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6e, 0x0a, 0x0c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
- 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x81, 0x02, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,
- 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x61, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3f, 0x0a, 0x16, 0x41, 0x63, 0x74,
- 0x69, 0x76, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
- 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x13, 0x4c, 0x69,
- 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x32, 0xd0, 0x08, 0x0a, 0x08, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xcd, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x22, 0x1f, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa1, 0x06, 0xc2, 0xf0, 0x8e,
- 0xfc, 0x0b, 0x33, 0x0a, 0x28, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x7a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x12, 0x12, 0x10, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xa3, 0x06,
- 0x10, 0x01, 0x12, 0xb5, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
- 0x70, 0x74, 0x79, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa4,
- 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x33, 0x0a, 0x28, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xb4, 0x01, 0x0a, 0x06, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
- 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a,
- 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa2, 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x33, 0x0a, 0x28,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
- 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x39, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa3, 0x06, 0x12, 0xe2, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69,
- 0x76, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x7d, 0x82,
- 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xa2, 0x06, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3d, 0x0a,
- 0x32, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64,
- 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6a, 0x0a, 0x22,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73,
- 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
- 0x76, 0x31, 0x42, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73,
- 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_policies_platform_proto_rawDescOnce sync.Once
- file_policies_platform_proto_rawDescData = file_policies_platform_proto_rawDesc
-)
-
-func file_policies_platform_proto_rawDescGZIP() []byte {
- file_policies_platform_proto_rawDescOnce.Do(func() {
- file_policies_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_policies_platform_proto_rawDescData)
- })
- return file_policies_platform_proto_rawDescData
-}
-
-var file_policies_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
-var file_policies_platform_proto_goTypes = []interface{}{
- (*CreatePolicyRequest)(nil), // 0: chainguard.platform.iam.CreatePolicyRequest
- (*Policy)(nil), // 1: chainguard.platform.iam.Policy
- (*PolicyAuthor)(nil), // 2: chainguard.platform.iam.PolicyAuthor
- (*PolicyList)(nil), // 3: chainguard.platform.iam.PolicyList
- (*PolicyFilter)(nil), // 4: chainguard.platform.iam.PolicyFilter
- (*DeletePolicyRequest)(nil), // 5: chainguard.platform.iam.DeletePolicyRequest
- (*PolicyVersion)(nil), // 6: chainguard.platform.iam.PolicyVersion
- (*ActivateVersionRequest)(nil), // 7: chainguard.platform.iam.ActivateVersionRequest
- (*ListVersionsRequest)(nil), // 8: chainguard.platform.iam.ListVersionsRequest
- (*PolicyVersionList)(nil), // 9: chainguard.platform.iam.PolicyVersionList
- (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 11: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 12: google.protobuf.Empty
-}
-var file_policies_platform_proto_depIdxs = []int32{
- 1, // 0: chainguard.platform.iam.CreatePolicyRequest.policy:type_name -> chainguard.platform.iam.Policy
- 10, // 1: chainguard.platform.iam.Policy.created_at:type_name -> google.protobuf.Timestamp
- 10, // 2: chainguard.platform.iam.Policy.updated_at:type_name -> google.protobuf.Timestamp
- 6, // 3: chainguard.platform.iam.Policy.enforced_version:type_name -> chainguard.platform.iam.PolicyVersion
- 1, // 4: chainguard.platform.iam.PolicyList.items:type_name -> chainguard.platform.iam.Policy
- 11, // 5: chainguard.platform.iam.PolicyFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 2, // 6: chainguard.platform.iam.PolicyVersion.author:type_name -> chainguard.platform.iam.PolicyAuthor
- 10, // 7: chainguard.platform.iam.PolicyVersion.created_at:type_name -> google.protobuf.Timestamp
- 6, // 8: chainguard.platform.iam.PolicyVersionList.items:type_name -> chainguard.platform.iam.PolicyVersion
- 0, // 9: chainguard.platform.iam.Policies.Create:input_type -> chainguard.platform.iam.CreatePolicyRequest
- 4, // 10: chainguard.platform.iam.Policies.List:input_type -> chainguard.platform.iam.PolicyFilter
- 5, // 11: chainguard.platform.iam.Policies.Delete:input_type -> chainguard.platform.iam.DeletePolicyRequest
- 1, // 12: chainguard.platform.iam.Policies.Update:input_type -> chainguard.platform.iam.Policy
- 8, // 13: chainguard.platform.iam.Policies.ListVersions:input_type -> chainguard.platform.iam.ListVersionsRequest
- 7, // 14: chainguard.platform.iam.Policies.ActivateVersion:input_type -> chainguard.platform.iam.ActivateVersionRequest
- 1, // 15: chainguard.platform.iam.Policies.Create:output_type -> chainguard.platform.iam.Policy
- 3, // 16: chainguard.platform.iam.Policies.List:output_type -> chainguard.platform.iam.PolicyList
- 12, // 17: chainguard.platform.iam.Policies.Delete:output_type -> google.protobuf.Empty
- 1, // 18: chainguard.platform.iam.Policies.Update:output_type -> chainguard.platform.iam.Policy
- 9, // 19: chainguard.platform.iam.Policies.ListVersions:output_type -> chainguard.platform.iam.PolicyVersionList
- 1, // 20: chainguard.platform.iam.Policies.ActivateVersion:output_type -> chainguard.platform.iam.Policy
- 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_policies_platform_proto_init() }
-func file_policies_platform_proto_init() {
- if File_policies_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_policies_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreatePolicyRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Policy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyAuthor); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeletePolicyRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyVersion); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ActivateVersionRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListVersionsRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policies_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyVersionList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_policies_platform_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 10,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_policies_platform_proto_goTypes,
- DependencyIndexes: file_policies_platform_proto_depIdxs,
- MessageInfos: file_policies_platform_proto_msgTypes,
- }.Build()
- File_policies_platform_proto = out.File
- file_policies_platform_proto_rawDesc = nil
- file_policies_platform_proto_goTypes = nil
- file_policies_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/iam/v1/policies.platform.pb.gw.go b/proto/platform/iam/v1/policies.platform.pb.gw.go
deleted file mode 100644
index f741781f..00000000
--- a/proto/platform/iam/v1/policies.platform.pb.gw.go
+++ /dev/null
@@ -1,703 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: policies.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Policies_Create_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreatePolicyRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Policy); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_Create_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreatePolicyRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Policy); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Policies_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Policies_List_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PolicyFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Policies_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_List_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PolicyFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Policies_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Policies_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeletePolicyRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeletePolicyRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Policies_Update_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Policy
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_Update_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Policy
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Policies_ListVersions_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ListVersionsRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["policy_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "policy_id")
- }
-
- protoReq.PolicyId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "policy_id", err)
- }
-
- msg, err := client.ListVersions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_ListVersions_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ListVersionsRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["policy_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "policy_id")
- }
-
- protoReq.PolicyId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "policy_id", err)
- }
-
- msg, err := server.ListVersions(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Policies_ActivateVersion_0(ctx context.Context, marshaler runtime.Marshaler, client PoliciesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ActivateVersionRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["version_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "version_id")
- }
-
- protoReq.VersionId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_id", err)
- }
-
- msg, err := client.ActivateVersion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Policies_ActivateVersion_0(ctx context.Context, marshaler runtime.Marshaler, server PoliciesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ActivateVersionRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["version_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "version_id")
- }
-
- protoReq.VersionId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_id", err)
- }
-
- msg, err := server.ActivateVersion(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterPoliciesHandlerServer registers the http handlers for service Policies to "mux".
-// UnaryRPC :call PoliciesServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPoliciesHandlerFromEndpoint instead.
-func RegisterPoliciesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PoliciesServer) error {
-
- mux.Handle("POST", pattern_Policies_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Create", runtime.WithHTTPPathPattern("/iam/v1/policies/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Policies_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/List", runtime.WithHTTPPathPattern("/iam/v1/policies"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Policies_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Delete", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Policies_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Update", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Policies_ListVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ListVersions", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{policy_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_ListVersions_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_ListVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Policies_ActivateVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ActivateVersion", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{version_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Policies_ActivateVersion_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_ActivateVersion_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterPoliciesHandlerFromEndpoint is same as RegisterPoliciesHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterPoliciesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterPoliciesHandler(ctx, mux, conn)
-}
-
-// RegisterPoliciesHandler registers the http handlers for service Policies to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterPoliciesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterPoliciesHandlerClient(ctx, mux, NewPoliciesClient(conn))
-}
-
-// RegisterPoliciesHandlerClient registers the http handlers for service Policies
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PoliciesClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PoliciesClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "PoliciesClient" to call the correct interceptors.
-func RegisterPoliciesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PoliciesClient) error {
-
- mux.Handle("POST", pattern_Policies_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Create", runtime.WithHTTPPathPattern("/iam/v1/policies/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Policies_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/List", runtime.WithHTTPPathPattern("/iam/v1/policies"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Policies_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Delete", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Policies_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/Update", runtime.WithHTTPPathPattern("/iam/v1/policies/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Policies_ListVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ListVersions", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{policy_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_ListVersions_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_ListVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Policies_ActivateVersion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.iam.Policies/ActivateVersion", runtime.WithHTTPPathPattern("/iam/v1/policyVersions/{version_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Policies_ActivateVersion_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Policies_ActivateVersion_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Policies_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "parent_id"}, ""))
-
- pattern_Policies_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"iam", "v1", "policies"}, ""))
-
- pattern_Policies_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "id"}, ""))
-
- pattern_Policies_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policies", "id"}, ""))
-
- pattern_Policies_ListVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policyVersions", "policy_id"}, ""))
-
- pattern_Policies_ActivateVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"iam", "v1", "policyVersions", "version_id"}, ""))
-)
-
-var (
- forward_Policies_Create_0 = runtime.ForwardResponseMessage
-
- forward_Policies_List_0 = runtime.ForwardResponseMessage
-
- forward_Policies_Delete_0 = runtime.ForwardResponseMessage
-
- forward_Policies_Update_0 = runtime.ForwardResponseMessage
-
- forward_Policies_ListVersions_0 = runtime.ForwardResponseMessage
-
- forward_Policies_ActivateVersion_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/iam/v1/policies.platform.proto b/proto/platform/iam/v1/policies.platform.proto
deleted file mode 100644
index e7f42222..00000000
--- a/proto/platform/iam/v1/policies.platform.proto
+++ /dev/null
@@ -1,208 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/iam/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.iam.v1";
-option java_outer_classname = "PlatformIAMPoliciesProto";
-
-package chainguard.platform.iam;
-
-import "google/protobuf/empty.proto";
-import "google/protobuf/timestamp.proto";
-import "google/api/annotations.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Policies {
- rpc Create(CreatePolicyRequest) returns (Policy) {
- option (google.api.http) = {
- post: "/iam/v1/policies/{parent_id=**}"
- body: "policy"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_CREATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.policy.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc List(PolicyFilter) returns (PolicyList) {
- option (google.api.http) = {
- get: "/iam/v1/policies"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Delete(DeletePolicyRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/iam/v1/policies/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.policy.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Update(Policy) returns (Policy) {
- option (google.api.http) = {
- put: "/iam/v1/policies/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.policy.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc ListVersions(ListVersionsRequest) returns (PolicyVersionList) {
- option (google.api.http) = {
- get: "/iam/v1/policyVersions/{policy_id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_LIST]
- }
- };
- }
-
- rpc ActivateVersion(ActivateVersionRequest) returns (Policy) {
- option (google.api.http) = {
- post: "/iam/v1/policyVersions/{version_id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_IAM_POLICY_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.iam.policy.version.activated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-}
-
-message CreatePolicyRequest {
- // parent_id, The Group UIDP path under which the new policy is associated.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // Policy is the policy to create;
- Policy policy = 2;
-}
-
-message Policy {
- // id is identifier of this specific policy.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // name, human readable name of policy.
- // This field is populated from the document and any existing value will be ignored for Create/Update.
- string name = 2;
-
- // description, human readable description of policy.
- string description = 3;
-
- // document, YAML encoded policy document.
- string document = 4;
-
- // created_at is the timestamp for when the policy was created.
- google.protobuf.Timestamp created_at = 5;
-
- // updated_at is the timestamp when the current version of the policy was last updated.
- google.protobuf.Timestamp updated_at = 6;
-
- // enforced_version contains information about the enforced version of this policy.
- // When used as a return value, Policy.name, Policy.description, and Policy.document are all copies of
- // the respective fields in enforced_version for backwards compatibility. enforced_version may be empty for
- // legacy policies without versions.
- // When used for Create or Update, set enforced_version.label to set an optional version label.
- PolicyVersion enforced_version = 7;
-}
-
-message PolicyAuthor {
- // id is the UID of the author identity.
- string id = 1;
-
- // email is the email address of the author, if known.
- string email = 2;
-}
-
-message PolicyList {
- repeated Policy items = 1;
-}
-
-message PolicyFilter {
- // id is the exact UIDP of the record.
- string id = 1;
-
- // uidp filers records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 2;
-
- // name is the exact name of the record.
- string name = 3;
-}
-
-message DeletePolicyRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message PolicyVersion {
- // id is the identifier of this specific policy version.
- string id = 1;
-
- // name, human-readable name of policy.
- string name = 2;
-
- // description, human-readable description of policy.
- string description = 3;
-
- // document, YAML encoded policy document.
- string document = 4;
-
- // author is information about the identity that created/updated this version of the policy, if known.
- PolicyAuthor author = 5;
-
- // created_at is the timestamp from when this version was created.
- google.protobuf.Timestamp created_at = 6;
-
- // label is a human-readable identifier for this version of the policy.
- string label = 7;
-}
-
-message ActivateVersionRequest {
- // version_id is the identifier of the policy version to enforce.
- string version_id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message ListVersionsRequest {
- // policy_id is the identifier of the policy to list versions of.
- string policy_id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message PolicyVersionList {
- repeated PolicyVersion items = 1;
-}
-
diff --git a/proto/platform/iam/v1/policies.platform_grpc.pb.go b/proto/platform/iam/v1/policies.platform_grpc.pb.go
deleted file mode 100644
index 94a15fb1..00000000
--- a/proto/platform/iam/v1/policies.platform_grpc.pb.go
+++ /dev/null
@@ -1,295 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: policies.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Policies_Create_FullMethodName = "/chainguard.platform.iam.Policies/Create"
- Policies_List_FullMethodName = "/chainguard.platform.iam.Policies/List"
- Policies_Delete_FullMethodName = "/chainguard.platform.iam.Policies/Delete"
- Policies_Update_FullMethodName = "/chainguard.platform.iam.Policies/Update"
- Policies_ListVersions_FullMethodName = "/chainguard.platform.iam.Policies/ListVersions"
- Policies_ActivateVersion_FullMethodName = "/chainguard.platform.iam.Policies/ActivateVersion"
-)
-
-// PoliciesClient is the client API for Policies service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type PoliciesClient interface {
- Create(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*Policy, error)
- List(ctx context.Context, in *PolicyFilter, opts ...grpc.CallOption) (*PolicyList, error)
- Delete(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- Update(ctx context.Context, in *Policy, opts ...grpc.CallOption) (*Policy, error)
- ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*PolicyVersionList, error)
- ActivateVersion(ctx context.Context, in *ActivateVersionRequest, opts ...grpc.CallOption) (*Policy, error)
-}
-
-type policiesClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewPoliciesClient(cc grpc.ClientConnInterface) PoliciesClient {
- return &policiesClient{cc}
-}
-
-func (c *policiesClient) Create(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*Policy, error) {
- out := new(Policy)
- err := c.cc.Invoke(ctx, Policies_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *policiesClient) List(ctx context.Context, in *PolicyFilter, opts ...grpc.CallOption) (*PolicyList, error) {
- out := new(PolicyList)
- err := c.cc.Invoke(ctx, Policies_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *policiesClient) Delete(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Policies_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *policiesClient) Update(ctx context.Context, in *Policy, opts ...grpc.CallOption) (*Policy, error) {
- out := new(Policy)
- err := c.cc.Invoke(ctx, Policies_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *policiesClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*PolicyVersionList, error) {
- out := new(PolicyVersionList)
- err := c.cc.Invoke(ctx, Policies_ListVersions_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *policiesClient) ActivateVersion(ctx context.Context, in *ActivateVersionRequest, opts ...grpc.CallOption) (*Policy, error) {
- out := new(Policy)
- err := c.cc.Invoke(ctx, Policies_ActivateVersion_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// PoliciesServer is the server API for Policies service.
-// All implementations must embed UnimplementedPoliciesServer
-// for forward compatibility
-type PoliciesServer interface {
- Create(context.Context, *CreatePolicyRequest) (*Policy, error)
- List(context.Context, *PolicyFilter) (*PolicyList, error)
- Delete(context.Context, *DeletePolicyRequest) (*emptypb.Empty, error)
- Update(context.Context, *Policy) (*Policy, error)
- ListVersions(context.Context, *ListVersionsRequest) (*PolicyVersionList, error)
- ActivateVersion(context.Context, *ActivateVersionRequest) (*Policy, error)
- mustEmbedUnimplementedPoliciesServer()
-}
-
-// UnimplementedPoliciesServer must be embedded to have forward compatible implementations.
-type UnimplementedPoliciesServer struct {
-}
-
-func (UnimplementedPoliciesServer) Create(context.Context, *CreatePolicyRequest) (*Policy, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedPoliciesServer) List(context.Context, *PolicyFilter) (*PolicyList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedPoliciesServer) Delete(context.Context, *DeletePolicyRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedPoliciesServer) Update(context.Context, *Policy) (*Policy, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedPoliciesServer) ListVersions(context.Context, *ListVersionsRequest) (*PolicyVersionList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListVersions not implemented")
-}
-func (UnimplementedPoliciesServer) ActivateVersion(context.Context, *ActivateVersionRequest) (*Policy, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ActivateVersion not implemented")
-}
-func (UnimplementedPoliciesServer) mustEmbedUnimplementedPoliciesServer() {}
-
-// UnsafePoliciesServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to PoliciesServer will
-// result in compilation errors.
-type UnsafePoliciesServer interface {
- mustEmbedUnimplementedPoliciesServer()
-}
-
-func RegisterPoliciesServer(s grpc.ServiceRegistrar, srv PoliciesServer) {
- s.RegisterService(&Policies_ServiceDesc, srv)
-}
-
-func _Policies_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreatePolicyRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).Create(ctx, req.(*CreatePolicyRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Policies_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(PolicyFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).List(ctx, req.(*PolicyFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Policies_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeletePolicyRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).Delete(ctx, req.(*DeletePolicyRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Policies_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Policy)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).Update(ctx, req.(*Policy))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Policies_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ListVersionsRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).ListVersions(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_ListVersions_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).ListVersions(ctx, req.(*ListVersionsRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Policies_ActivateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ActivateVersionRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PoliciesServer).ActivateVersion(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Policies_ActivateVersion_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PoliciesServer).ActivateVersion(ctx, req.(*ActivateVersionRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Policies_ServiceDesc is the grpc.ServiceDesc for Policies service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Policies_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.iam.Policies",
- HandlerType: (*PoliciesServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Policies_Create_Handler,
- },
- {
- MethodName: "List",
- Handler: _Policies_List_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Policies_Delete_Handler,
- },
- {
- MethodName: "Update",
- Handler: _Policies_Update_Handler,
- },
- {
- MethodName: "ListVersions",
- Handler: _Policies_ListVersions_Handler,
- },
- {
- MethodName: "ActivateVersion",
- Handler: _Policies_ActivateVersion_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "policies.platform.proto",
-}
diff --git a/proto/platform/iam/v1/test/mock_client.go b/proto/platform/iam/v1/test/mock_client.go
index 90ccc1e6..08444e61 100644
--- a/proto/platform/iam/v1/test/mock_client.go
+++ b/proto/platform/iam/v1/test/mock_client.go
@@ -22,7 +22,6 @@ type MockIAMClient struct {
IdentityProvidersClient MockIdentityProvidersClient
GroupAccountAssociationsClient MockGroupAccountAssociationsClient
SubscriptionsClient MockSubscriptionsClient
- PoliciesClient MockPoliciesClient
}
var _ iam.Clients = (*MockIAMClient)(nil)
@@ -63,10 +62,6 @@ func (m MockIAMClient) Subscriptions() events.SubscriptionsClient {
return &m.SubscriptionsClient
}
-func (m MockIAMClient) Policies() iam.PoliciesClient {
- return &m.PoliciesClient
-}
-
func (m MockIAMClient) Close() error {
return m.OnClose
}
diff --git a/proto/platform/iam/v1/test/mock_policies.go b/proto/platform/iam/v1/test/mock_policies.go
deleted file mode 100644
index f9ac1179..00000000
--- a/proto/platform/iam/v1/test/mock_policies.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- iam "chainguard.dev/sdk/proto/platform/iam/v1"
-)
-
-var _ iam.PoliciesClient = (*MockPoliciesClient)(nil)
-
-type MockPoliciesClient struct {
- OnCreate []PoliciesOnCreate
- OnUpdate []PoliciesOnUpdate
- OnDelete []PoliciesOnDelete
- OnList []PoliciesOnList
- OnListVersions []PoliciesOnListVersions
- OnActiveVersion []PoliciesOnActivateVersion
-}
-
-type PoliciesOnCreate struct {
- Given *iam.CreatePolicyRequest
- Created *iam.Policy
- Error error
-}
-
-type PoliciesOnUpdate struct {
- Given *iam.Policy
- Updated *iam.Policy
- Error error
-}
-
-type PoliciesOnDelete struct {
- Given *iam.DeletePolicyRequest
- Error error
-}
-
-type PoliciesOnList struct {
- Given *iam.PolicyFilter
- List *iam.PolicyList
- Error error
-}
-
-type PoliciesOnListVersions struct {
- Given *iam.ListVersionsRequest
- List *iam.PolicyVersionList
- Error error
-}
-
-type PoliciesOnActivateVersion struct {
- Given *iam.ActivateVersionRequest
- Active *iam.Policy
- Error error
-}
-
-func (m MockPoliciesClient) Create(_ context.Context, given *iam.CreatePolicyRequest, _ ...grpc.CallOption) (*iam.Policy, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockPoliciesClient) Update(_ context.Context, given *iam.Policy, _ ...grpc.CallOption) (*iam.Policy, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockPoliciesClient) Delete(_ context.Context, given *iam.DeletePolicyRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockPoliciesClient) List(_ context.Context, given *iam.PolicyFilter, _ ...grpc.CallOption) (*iam.PolicyList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockPoliciesClient) ListVersions(_ context.Context, given *iam.ListVersionsRequest, _ ...grpc.CallOption) (*iam.PolicyVersionList, error) {
- for _, o := range m.OnListVersions {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockPoliciesClient) ActivateVersion(_ context.Context, given *iam.ActivateVersionRequest, _ ...grpc.CallOption) (*iam.Policy, error) {
- for _, o := range m.OnActiveVersion {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Active, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
From e86d29b0382fe3c1d775a554b6a5b77c93935d6e Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 18 Apr 2024 09:38:06 -0700
Subject: [PATCH 25/41] Export e1c5562ccd5408b262bd25c8f0737548d2ac68aa
Export: e1c5562ccd5408b262bd25c8f0737548d2ac68aa
---
proto/platform/auth/v1/auth.platform.pb.go | 237 +-
proto/platform/auth/v1/auth.platform.proto | 21 +-
proto/platform/tenant/v1/clients.go | 18 +-
.../tenant/v1/cluster.platform.event.go | 45 -
.../platform/tenant/v1/cluster.platform.pb.go | 2934 -----------------
.../tenant/v1/cluster.platform.pb.gw.go | 833 -----
.../platform/tenant/v1/cluster.platform.proto | 479 ---
.../tenant/v1/cluster.platform_grpc.pb.go | 369 ---
proto/platform/tenant/v1/doc.go | 2 -
proto/platform/tenant/v1/risk.platform.pb.go | 947 ------
.../platform/tenant/v1/risk.platform.pb.gw.go | 166 -
proto/platform/tenant/v1/risk.platform.proto | 116 -
.../tenant/v1/risk.platform_grpc.pb.go | 109 -
proto/platform/tenant/v1/test/mock_client.go | 10 -
proto/platform/tenant/v1/test/mock_cluster.go | 150 -
proto/platform/tenant/v1/test/mock_risks.go | 38 -
validation/enforcer_options.go | 27 -
17 files changed, 103 insertions(+), 6398 deletions(-)
delete mode 100644 proto/platform/tenant/v1/cluster.platform.event.go
delete mode 100644 proto/platform/tenant/v1/cluster.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/cluster.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/cluster.platform.proto
delete mode 100644 proto/platform/tenant/v1/cluster.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/risk.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/risk.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/risk.platform.proto
delete mode 100644 proto/platform/tenant/v1/risk.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/test/mock_cluster.go
delete mode 100644 proto/platform/tenant/v1/test/mock_risks.go
delete mode 100644 validation/enforcer_options.go
diff --git a/proto/platform/auth/v1/auth.platform.pb.go b/proto/platform/auth/v1/auth.platform.pb.go
index a049a7d1..05fbafbf 100644
--- a/proto/platform/auth/v1/auth.platform.pb.go
+++ b/proto/platform/auth/v1/auth.platform.pb.go
@@ -8,8 +8,7 @@ package v1
import (
_ "chainguard.dev/sdk/proto/annotations"
- v11 "chainguard.dev/sdk/proto/platform/iam/v1"
- v1 "chainguard.dev/sdk/proto/platform/tenant/v1"
+ v1 "chainguard.dev/sdk/proto/platform/iam/v1"
_ "google.golang.org/genproto/googleapis/api/annotations"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@@ -36,22 +35,10 @@ type RegistrationRequest struct {
// role.
// +optional
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
- // cluster_id is an optional cluster id, which simultaneously registers
- // a Cluster with the Identity. This path must specify an invite code, so
- // we know where in the IAM hierarchy to link the cluster.
- ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
// identity_id is an optional identity id. If the user already exists, this
// by-passes identity registration and continues on to cluster registration
// (if applicable)
IdentityId string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
- // cluster_name is an optional name to give the cluster when one is
- // registered as part of the registration flow.
- ClusterName string `protobuf:"bytes,4,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
- // cluster_description is an optional description to give the cluster
- // when one is registered as part of the registration flow.
- ClusterDescription string `protobuf:"bytes,5,opt,name=cluster_description,json=clusterDescription,proto3" json:"cluster_description,omitempty"`
- // enforcer_options defines the enforcer options.
- EnforcerOptions *v1.Cluster_EnforcerOptions `protobuf:"bytes,6,opt,name=enforcer_options,json=enforcerOptions,proto3" json:"enforcer_options,omitempty"`
}
func (x *RegistrationRequest) Reset() {
@@ -93,13 +80,6 @@ func (x *RegistrationRequest) GetCode() string {
return ""
}
-func (x *RegistrationRequest) GetClusterId() string {
- if x != nil {
- return x.ClusterId
- }
- return ""
-}
-
func (x *RegistrationRequest) GetIdentityId() string {
if x != nil {
return x.IdentityId
@@ -107,27 +87,6 @@ func (x *RegistrationRequest) GetIdentityId() string {
return ""
}
-func (x *RegistrationRequest) GetClusterName() string {
- if x != nil {
- return x.ClusterName
- }
- return ""
-}
-
-func (x *RegistrationRequest) GetClusterDescription() string {
- if x != nil {
- return x.ClusterDescription
- }
- return ""
-}
-
-func (x *RegistrationRequest) GetEnforcerOptions() *v1.Cluster_EnforcerOptions {
- if x != nil {
- return x.EnforcerOptions
- }
- return nil
-}
-
type Session struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -295,9 +254,9 @@ type WhoAmI_Capability struct {
unknownFields protoimpl.UnknownFields
// group of the bound role.
- Group *v11.Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
+ Group *v1.Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
// role of the bound identity.
- Role *v11.Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
+ Role *v1.Role `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
}
func (x *WhoAmI_Capability) Reset() {
@@ -332,14 +291,14 @@ func (*WhoAmI_Capability) Descriptor() ([]byte, []int) {
return file_auth_platform_proto_rawDescGZIP(), []int{2, 0}
}
-func (x *WhoAmI_Capability) GetGroup() *v11.Group {
+func (x *WhoAmI_Capability) GetGroup() *v1.Group {
if x != nil {
return x.Group
}
return nil
}
-func (x *WhoAmI_Capability) GetRole() *v11.Role {
+func (x *WhoAmI_Capability) GetRole() *v1.Role {
if x != nil {
return x.Role
}
@@ -363,85 +322,71 @@ var file_auth_platform_proto_rawDesc = []byte{
0x6f, 0x75, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x23, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d,
0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63,
- 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12,
- 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f,
- 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a,
- 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x22, 0xa1, 0x03, 0x0a, 0x06, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x12, 0x16, 0x0a, 0x06, 0x69,
- 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73,
- 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a,
- 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x78, 0x70,
- 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
+ 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+ 0x74, 0x79, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
+ 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x3b, 0x0a, 0x07,
+ 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa1, 0x03, 0x0a, 0x06, 0x57, 0x68,
+ 0x6f, 0x41, 0x6d, 0x49, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
+ 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
+ 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x65, 0x6e,
+ 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06,
+ 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64,
+ 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x37, 0x0a,
- 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73,
- 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x2e, 0x43,
- 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
- 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x75, 0x0a,
- 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12,
+ 0x4f, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68,
+ 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
+ 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x75, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f,
+ 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
+ 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x32, 0xa4, 0x02,
+ 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+ 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x32, 0xa4, 0x02, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x61, 0x0a,
- 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f,
- 0x41, 0x6d, 0x49, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x75,
- 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00,
- 0x12, 0xb8, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22,
- 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74,
- 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x02, 0x0a, 0x00, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x30, 0x0a, 0x25, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x65, 0x0a, 0x23, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
- 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e,
- 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x75, 0x74, 0x68,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
- 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x57, 0x68, 0x6f, 0x41, 0x6d, 0x49, 0x22, 0x1b, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x6f,
+ 0x6b, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00, 0x12, 0xb8, 0x01, 0x0a, 0x08, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74,
+ 0x68, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68,
+ 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16,
+ 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x0a, 0x00, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x30, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x42, 0x65, 0x0a, 0x23, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+ 0x5a, 0x29, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76,
+ 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
@@ -458,32 +403,30 @@ func file_auth_platform_proto_rawDescGZIP() []byte {
var file_auth_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_auth_platform_proto_goTypes = []interface{}{
- (*RegistrationRequest)(nil), // 0: chainguard.platform.auth.RegistrationRequest
- (*Session)(nil), // 1: chainguard.platform.auth.Session
- (*WhoAmI)(nil), // 2: chainguard.platform.auth.WhoAmI
- (*WhoAmI_Capability)(nil), // 3: chainguard.platform.auth.WhoAmI.Capability
- (*v1.Cluster_EnforcerOptions)(nil), // 4: chainguard.platform.tenant.Cluster.EnforcerOptions
- (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
- (*v11.Group)(nil), // 6: chainguard.platform.iam.Group
- (*v11.Role)(nil), // 7: chainguard.platform.iam.Role
- (*emptypb.Empty)(nil), // 8: google.protobuf.Empty
+ (*RegistrationRequest)(nil), // 0: chainguard.platform.auth.RegistrationRequest
+ (*Session)(nil), // 1: chainguard.platform.auth.Session
+ (*WhoAmI)(nil), // 2: chainguard.platform.auth.WhoAmI
+ (*WhoAmI_Capability)(nil), // 3: chainguard.platform.auth.WhoAmI.Capability
+ (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp
+ (*v1.Group)(nil), // 5: chainguard.platform.iam.Group
+ (*v1.Role)(nil), // 6: chainguard.platform.iam.Role
+ (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
}
var file_auth_platform_proto_depIdxs = []int32{
- 4, // 0: chainguard.platform.auth.RegistrationRequest.enforcer_options:type_name -> chainguard.platform.tenant.Cluster.EnforcerOptions
- 5, // 1: chainguard.platform.auth.WhoAmI.expiry:type_name -> google.protobuf.Timestamp
- 5, // 2: chainguard.platform.auth.WhoAmI.issued_at:type_name -> google.protobuf.Timestamp
- 3, // 3: chainguard.platform.auth.WhoAmI.capabilities:type_name -> chainguard.platform.auth.WhoAmI.Capability
- 6, // 4: chainguard.platform.auth.WhoAmI.Capability.group:type_name -> chainguard.platform.iam.Group
- 7, // 5: chainguard.platform.auth.WhoAmI.Capability.role:type_name -> chainguard.platform.iam.Role
- 8, // 6: chainguard.platform.auth.Auth.Validate:input_type -> google.protobuf.Empty
- 0, // 7: chainguard.platform.auth.Auth.Register:input_type -> chainguard.platform.auth.RegistrationRequest
- 2, // 8: chainguard.platform.auth.Auth.Validate:output_type -> chainguard.platform.auth.WhoAmI
- 1, // 9: chainguard.platform.auth.Auth.Register:output_type -> chainguard.platform.auth.Session
- 8, // [8:10] is the sub-list for method output_type
- 6, // [6:8] 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
+ 4, // 0: chainguard.platform.auth.WhoAmI.expiry:type_name -> google.protobuf.Timestamp
+ 4, // 1: chainguard.platform.auth.WhoAmI.issued_at:type_name -> google.protobuf.Timestamp
+ 3, // 2: chainguard.platform.auth.WhoAmI.capabilities:type_name -> chainguard.platform.auth.WhoAmI.Capability
+ 5, // 3: chainguard.platform.auth.WhoAmI.Capability.group:type_name -> chainguard.platform.iam.Group
+ 6, // 4: chainguard.platform.auth.WhoAmI.Capability.role:type_name -> chainguard.platform.iam.Role
+ 7, // 5: chainguard.platform.auth.Auth.Validate:input_type -> google.protobuf.Empty
+ 0, // 6: chainguard.platform.auth.Auth.Register:input_type -> chainguard.platform.auth.RegistrationRequest
+ 2, // 7: chainguard.platform.auth.Auth.Validate:output_type -> chainguard.platform.auth.WhoAmI
+ 1, // 8: chainguard.platform.auth.Auth.Register:output_type -> chainguard.platform.auth.Session
+ 7, // [7:9] is the sub-list for method output_type
+ 5, // [5:7] 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_auth_platform_proto_init() }
diff --git a/proto/platform/auth/v1/auth.platform.proto b/proto/platform/auth/v1/auth.platform.proto
index 40b20e45..f656e83a 100644
--- a/proto/platform/auth/v1/auth.platform.proto
+++ b/proto/platform/auth/v1/auth.platform.proto
@@ -13,7 +13,6 @@ import "annotations/auth.proto";
import "annotations/events.proto";
import "platform/iam/v1/group.platform.proto";
import "platform/iam/v1/role.platform.proto";
-import "platform/tenant/v1/cluster.platform.proto";
import "google/protobuf/timestamp.proto";
service Auth {
@@ -55,26 +54,30 @@ message RegistrationRequest {
// +optional
string code = 1;
- // cluster_id is an optional cluster id, which simultaneously registers
+ // DEPRECATED: cluster_id is an optional cluster id, which simultaneously registers
// a Cluster with the Identity. This path must specify an invite code, so
// we know where in the IAM hierarchy to link the cluster.
- string cluster_id = 2;
+ // string cluster_id = 2;
+ reserved 2;
// identity_id is an optional identity id. If the user already exists, this
// by-passes identity registration and continues on to cluster registration
// (if applicable)
string identity_id = 3;
- // cluster_name is an optional name to give the cluster when one is
+ // DEPRECATED: cluster_name is an optional name to give the cluster when one is
// registered as part of the registration flow.
- string cluster_name = 4;
+ // string cluster_name = 4;
+ reserved 4;
- // cluster_description is an optional description to give the cluster
+ // DEPRECATED: cluster_description is an optional description to give the cluster
// when one is registered as part of the registration flow.
- string cluster_description = 5;
+ // string cluster_description = 5;
+ reserved 5;
- // enforcer_options defines the enforcer options.
- chainguard.platform.tenant.Cluster.EnforcerOptions enforcer_options = 6;
+ // DEPRECATED: enforcer_options defines the enforcer options.
+ // chainguard.platform.tenant.Cluster.EnforcerOptions enforcer_options = 6;
+ reserved 6;
}
message Session {
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
index 960cc14d..83d2e3be 100644
--- a/proto/platform/tenant/v1/clients.go
+++ b/proto/platform/tenant/v1/clients.go
@@ -19,11 +19,9 @@ import (
)
type Clients interface {
- Clusters() ClustersClient
Records() RecordsClient
RecordContexts() RecordContextsClient
Sboms() SbomsClient
- Risks() RisksClient
Signatures() SignaturesClient
PolicyResults() PolicyResultsClient
VulnReports() VulnReportsClient
@@ -57,12 +55,10 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
return &clients{
- clusters: NewClustersClient(conn),
records: NewRecordsClient(conn),
recordContexts: NewRecordContextsClient(conn),
sboms: NewSbomsClient(conn),
vulnReports: NewVulnReportsClient(conn),
- risks: NewRisksClient(conn),
signatures: NewSignaturesClient(conn),
policyResults: NewPolicyResultsClient(conn),
@@ -72,12 +68,10 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
return &clients{
- clusters: NewClustersClient(conn),
records: NewRecordsClient(conn),
recordContexts: NewRecordContextsClient(conn),
sboms: NewSbomsClient(conn),
vulnReports: NewVulnReportsClient(conn),
- risks: NewRisksClient(conn),
signatures: NewSignaturesClient(conn),
policyResults: NewPolicyResultsClient(conn),
// conn is not set, this client struct does not own closing it.
@@ -85,12 +79,10 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
}
type clients struct {
- clusters ClustersClient
- records RecordsClient
+ records RecordsClient
recordContexts RecordContextsClient
sboms SbomsClient
- risks RisksClient
signatures SignaturesClient
policyResults PolicyResultsClient
vulnReports VulnReportsClient
@@ -98,10 +90,6 @@ type clients struct {
conn *grpc.ClientConn
}
-func (c *clients) Clusters() ClustersClient {
- return c.clusters
-}
-
func (c *clients) Records() RecordsClient {
return c.records
}
@@ -114,10 +102,6 @@ func (c *clients) Sboms() SbomsClient {
return c.sboms
}
-func (c *clients) Risks() RisksClient {
- return c.risks
-}
-
func (c *clients) Signatures() SignaturesClient {
return c.signatures
}
diff --git a/proto/platform/tenant/v1/cluster.platform.event.go b/proto/platform/tenant/v1/cluster.platform.event.go
deleted file mode 100644
index aeb567ed..00000000
--- a/proto/platform/tenant/v1/cluster.platform.event.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package v1
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *Cluster) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *Cluster) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
-func (x *DeleteClusterRequest) CloudEventsExtension(key string) (string, bool) {
- switch key {
- case "group":
- return uidp.Parent(x.GetId()), true
- default:
- return "", false
- }
-}
-
-// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
-func (x *DeleteClusterRequest) CloudEventsSubject() string {
- return x.GetId()
-}
-
-// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.Redact.
-func (x *DeleteClusterRequest) CloudEventsRedact() interface{} {
- return nil
-}
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.go b/proto/platform/tenant/v1/cluster.platform.pb.go
deleted file mode 100644
index f5807936..00000000
--- a/proto/platform/tenant/v1/cluster.platform.pb.go
+++ /dev/null
@@ -1,2934 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: cluster.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v11 "chainguard.dev/sdk/proto/platform/common/v1"
- v1 "chainguard.dev/sdk/proto/platform/iam/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type ClusterDiscoveryRequest_State int32
-
-const (
- ClusterDiscoveryRequest_UNKNOWN ClusterDiscoveryRequest_State = 0
- ClusterDiscoveryRequest_UNSUPPORTED ClusterDiscoveryRequest_State = 1
- ClusterDiscoveryRequest_NEEDS_WORK ClusterDiscoveryRequest_State = 2
- ClusterDiscoveryRequest_ELIGIBLE ClusterDiscoveryRequest_State = 3
- ClusterDiscoveryRequest_ENROLLED ClusterDiscoveryRequest_State = 4
-)
-
-// Enum value maps for ClusterDiscoveryRequest_State.
-var (
- ClusterDiscoveryRequest_State_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "UNSUPPORTED",
- 2: "NEEDS_WORK",
- 3: "ELIGIBLE",
- 4: "ENROLLED",
- }
- ClusterDiscoveryRequest_State_value = map[string]int32{
- "UNKNOWN": 0,
- "UNSUPPORTED": 1,
- "NEEDS_WORK": 2,
- "ELIGIBLE": 3,
- "ENROLLED": 4,
- }
-)
-
-func (x ClusterDiscoveryRequest_State) Enum() *ClusterDiscoveryRequest_State {
- p := new(ClusterDiscoveryRequest_State)
- *p = x
- return p
-}
-
-func (x ClusterDiscoveryRequest_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ClusterDiscoveryRequest_State) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (ClusterDiscoveryRequest_State) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[0]
-}
-
-func (x ClusterDiscoveryRequest_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ClusterDiscoveryRequest_State.Descriptor instead.
-func (ClusterDiscoveryRequest_State) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{2, 0}
-}
-
-type Cluster_NamespaceEnforcementMode int32
-
-const (
- Cluster_OptOut Cluster_NamespaceEnforcementMode = 0
- Cluster_OptIn Cluster_NamespaceEnforcementMode = 1
-)
-
-// Enum value maps for Cluster_NamespaceEnforcementMode.
-var (
- Cluster_NamespaceEnforcementMode_name = map[int32]string{
- 0: "OptOut",
- 1: "OptIn",
- }
- Cluster_NamespaceEnforcementMode_value = map[string]int32{
- "OptOut": 0,
- "OptIn": 1,
- }
-)
-
-func (x Cluster_NamespaceEnforcementMode) Enum() *Cluster_NamespaceEnforcementMode {
- p := new(Cluster_NamespaceEnforcementMode)
- *p = x
- return p
-}
-
-func (x Cluster_NamespaceEnforcementMode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_NamespaceEnforcementMode) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (Cluster_NamespaceEnforcementMode) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[1]
-}
-
-func (x Cluster_NamespaceEnforcementMode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_NamespaceEnforcementMode.Descriptor instead.
-func (Cluster_NamespaceEnforcementMode) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 0}
-}
-
-type Cluster_Provider int32
-
-const (
- Cluster_UNKNOWN Cluster_Provider = 0
- Cluster_GKE Cluster_Provider = 1
- Cluster_EKS Cluster_Provider = 2
- // GCP Services (10+)
- Cluster_CLOUD_RUN Cluster_Provider = 10
- // AWS Services (20+)
- Cluster_ECS Cluster_Provider = 20
- Cluster_APP_RUNNER Cluster_Provider = 21
- // For testing.
- Cluster_KIND Cluster_Provider = 100
-)
-
-// Enum value maps for Cluster_Provider.
-var (
- Cluster_Provider_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "GKE",
- 2: "EKS",
- 10: "CLOUD_RUN",
- 20: "ECS",
- 21: "APP_RUNNER",
- 100: "KIND",
- }
- Cluster_Provider_value = map[string]int32{
- "UNKNOWN": 0,
- "GKE": 1,
- "EKS": 2,
- "CLOUD_RUN": 10,
- "ECS": 20,
- "APP_RUNNER": 21,
- "KIND": 100,
- }
-)
-
-func (x Cluster_Provider) Enum() *Cluster_Provider {
- p := new(Cluster_Provider)
- *p = x
- return p
-}
-
-func (x Cluster_Provider) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_Provider) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[2].Descriptor()
-}
-
-func (Cluster_Provider) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[2]
-}
-
-func (x Cluster_Provider) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_Provider.Descriptor instead.
-func (Cluster_Provider) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 1}
-}
-
-type Cluster_Location int32
-
-const (
- Cluster_AUTO Cluster_Location = 0
- // Use 1xx for US
- Cluster_US_EAST Cluster_Location = 101
- Cluster_US_CENTRAL Cluster_Location = 102
- Cluster_US_WEST Cluster_Location = 103
-)
-
-// Enum value maps for Cluster_Location.
-var (
- Cluster_Location_name = map[int32]string{
- 0: "AUTO",
- 101: "US_EAST",
- 102: "US_CENTRAL",
- 103: "US_WEST",
- }
- Cluster_Location_value = map[string]int32{
- "AUTO": 0,
- "US_EAST": 101,
- "US_CENTRAL": 102,
- "US_WEST": 103,
- }
-)
-
-func (x Cluster_Location) Enum() *Cluster_Location {
- p := new(Cluster_Location)
- *p = x
- return p
-}
-
-func (x Cluster_Location) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_Location) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[3].Descriptor()
-}
-
-func (Cluster_Location) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[3]
-}
-
-func (x Cluster_Location) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_Location.Descriptor instead.
-func (Cluster_Location) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 2}
-}
-
-type Cluster_Status_State int32
-
-const (
- Cluster_Status_UNKNOWN Cluster_Status_State = 0
- Cluster_Status_Ready Cluster_Status_State = 1
- Cluster_Status_NotReady Cluster_Status_State = 2
-)
-
-// Enum value maps for Cluster_Status_State.
-var (
- Cluster_Status_State_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "Ready",
- 2: "NotReady",
- }
- Cluster_Status_State_value = map[string]int32{
- "UNKNOWN": 0,
- "Ready": 1,
- "NotReady": 2,
- }
-)
-
-func (x Cluster_Status_State) Enum() *Cluster_Status_State {
- p := new(Cluster_Status_State)
- *p = x
- return p
-}
-
-func (x Cluster_Status_State) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Cluster_Status_State) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[4].Descriptor()
-}
-
-func (Cluster_Status_State) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[4]
-}
-
-func (x Cluster_Status_State) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Cluster_Status_State.Descriptor instead.
-func (Cluster_Status_State) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 4, 0}
-}
-
-type ClusterConfigRequest_NamespaceEnforcementMode int32
-
-const (
- ClusterConfigRequest_OptOut ClusterConfigRequest_NamespaceEnforcementMode = 0
- ClusterConfigRequest_OptIn ClusterConfigRequest_NamespaceEnforcementMode = 1
-)
-
-// Enum value maps for ClusterConfigRequest_NamespaceEnforcementMode.
-var (
- ClusterConfigRequest_NamespaceEnforcementMode_name = map[int32]string{
- 0: "OptOut",
- 1: "OptIn",
- }
- ClusterConfigRequest_NamespaceEnforcementMode_value = map[string]int32{
- "OptOut": 0,
- "OptIn": 1,
- }
-)
-
-func (x ClusterConfigRequest_NamespaceEnforcementMode) Enum() *ClusterConfigRequest_NamespaceEnforcementMode {
- p := new(ClusterConfigRequest_NamespaceEnforcementMode)
- *p = x
- return p
-}
-
-func (x ClusterConfigRequest_NamespaceEnforcementMode) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ClusterConfigRequest_NamespaceEnforcementMode) Descriptor() protoreflect.EnumDescriptor {
- return file_cluster_platform_proto_enumTypes[5].Descriptor()
-}
-
-func (ClusterConfigRequest_NamespaceEnforcementMode) Type() protoreflect.EnumType {
- return &file_cluster_platform_proto_enumTypes[5]
-}
-
-func (x ClusterConfigRequest_NamespaceEnforcementMode) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ClusterConfigRequest_NamespaceEnforcementMode.Descriptor instead.
-func (ClusterConfigRequest_NamespaceEnforcementMode) EnumDescriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{10, 0}
-}
-
-type CreateClusterRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // parent_id, The Group under which this Cluster resides.
- ParentId string `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
- // Cluster is the definition of the managed cluster to create.
- Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"`
-}
-
-func (x *CreateClusterRequest) Reset() {
- *x = CreateClusterRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CreateClusterRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateClusterRequest) ProtoMessage() {}
-
-func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateClusterRequest.ProtoReflect.Descriptor instead.
-func (*CreateClusterRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CreateClusterRequest) GetParentId() string {
- if x != nil {
- return x.ParentId
- }
- return ""
-}
-
-func (x *CreateClusterRequest) GetCluster() *Cluster {
- if x != nil {
- return x.Cluster
- }
- return nil
-}
-
-type DeleteClusterRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *DeleteClusterRequest) Reset() {
- *x = DeleteClusterRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *DeleteClusterRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteClusterRequest) ProtoMessage() {}
-
-func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteClusterRequest.ProtoReflect.Descriptor instead.
-func (*DeleteClusterRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *DeleteClusterRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-type ClusterDiscoveryRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UIDP of the group to impersonate to search for clusters.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // providers is the list of providers to perform discovery on.
- Providers []Cluster_Provider `protobuf:"varint,2,rep,packed,name=providers,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"providers,omitempty"`
- // profiles includes the set of profiles to perform discovery for,
- // which may impact eligibility (some profiles may not be supported
- // on some providers).
- Profiles []string `protobuf:"bytes,3,rep,name=profiles,proto3" json:"profiles,omitempty"`
- // states is a collection of the states to return, or all if
- // none are specified.
- States []ClusterDiscoveryRequest_State `protobuf:"varint,4,rep,packed,name=states,proto3,enum=chainguard.platform.tenant.ClusterDiscoveryRequest_State" json:"states,omitempty"`
-}
-
-func (x *ClusterDiscoveryRequest) Reset() {
- *x = ClusterDiscoveryRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryRequest) ProtoMessage() {}
-
-func (x *ClusterDiscoveryRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryRequest.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ClusterDiscoveryRequest) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *ClusterDiscoveryRequest) GetProviders() []Cluster_Provider {
- if x != nil {
- return x.Providers
- }
- return nil
-}
-
-func (x *ClusterDiscoveryRequest) GetProfiles() []string {
- if x != nil {
- return x.Profiles
- }
- return nil
-}
-
-func (x *ClusterDiscoveryRequest) GetStates() []ClusterDiscoveryRequest_State {
- if x != nil {
- return x.States
- }
- return nil
-}
-
-type ClusterDiscoveryResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Results []*ClusterDiscoveryResponse_Result `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
-}
-
-func (x *ClusterDiscoveryResponse) Reset() {
- *x = ClusterDiscoveryResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ClusterDiscoveryResponse) GetResults() []*ClusterDiscoveryResponse_Result {
- if x != nil {
- return x.Results
- }
- return nil
-}
-
-type Cluster struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The Cluster UIDP under which this Cluster resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // remote_id is the remote ID of this cluster.
- RemoteId string `protobuf:"bytes,2,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- // issuer is the identity issuer tied to this cluster.
- Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"`
- // registered tracks the timestamp at which this cluster was registered.
- Registered *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=registered,proto3" json:"registered,omitempty"`
- // last_seen tracks the timestamp at which this cluster was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // version holds the Kubernetes version last reported by the cluster.
- Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"`
- // agent_version holds the version of the Chainguard agent last reported by the cluster.
- AgentVersion string `protobuf:"bytes,7,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"`
- // activity is a mapping from "Source" URLs to an activity record summarizing
- // recent activity from this source.
- Activity map[string]*ClusterActivity `protobuf:"bytes,8,rep,name=activity,proto3" json:"activity,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // name of the cluster.
- Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this cluster.
- Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"`
- // group the cluster resides in
- Group *v1.Group `protobuf:"bytes,99,opt,name=group,proto3" json:"group,omitempty"`
- // managed_name is the unique name we have given to this cluster's managed agent.
- // This field is output-only, and is populated only when this cluster is "managed".
- ManagedName string `protobuf:"bytes,100,opt,name=managed_name,json=managedName,proto3" json:"managed_name,omitempty"`
- // provider holds the flavor of cluster provider, which is used to determine how we
- // authenticate with the cluster.
- Provider Cluster_Provider `protobuf:"varint,101,opt,name=provider,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"provider,omitempty"`
- // affinity specifies a scheduling preference for where to run the managed agent.
- // Other factors, such as the provider may be taken into account when choosing a
- // host cluster.
- Affinity Cluster_Location `protobuf:"varint,105,opt,name=affinity,proto3,enum=chainguard.platform.tenant.Cluster_Location" json:"affinity,omitempty"`
- // info contains the cluster information from the kubeconfig context.
- Info *Cluster_Info `protobuf:"bytes,102,opt,name=info,proto3" json:"info,omitempty"`
- // auth_info holds authentication details for connecting to KinD in test scenarios.
- AuthInfo *Cluster_AuthInfo `protobuf:"bytes,104,opt,name=auth_info,json=authInfo,proto3" json:"auth_info,omitempty"`
- // status contains the managed cluster's status.
- Status *Cluster_Status `protobuf:"bytes,103,opt,name=status,proto3" json:"status,omitempty"`
- // host_cluster surfaces the opaque identifier for the Chainguard cluster hosting
- // this agent.
- HostCluster string `protobuf:"bytes,106,opt,name=host_cluster,json=hostCluster,proto3" json:"host_cluster,omitempty"`
- // profiles specifies the root set of tenant configurations that we want to run
- // on this cluster.
- Profiles []string `protobuf:"bytes,107,rep,name=profiles,proto3" json:"profiles,omitempty"`
- // EnforcerOptions contains additional Enforcer configuration settings.
- // +optional
- EnforcerOptions *Cluster_EnforcerOptions `protobuf:"bytes,108,opt,name=enforcer_options,json=enforcerOptions,proto3,oneof" json:"enforcer_options,omitempty"`
-}
-
-func (x *Cluster) Reset() {
- *x = Cluster{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster) ProtoMessage() {}
-
-func (x *Cluster) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
-func (*Cluster) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Cluster) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Cluster) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *Cluster) GetIssuer() string {
- if x != nil {
- return x.Issuer
- }
- return ""
-}
-
-func (x *Cluster) GetRegistered() *timestamppb.Timestamp {
- if x != nil {
- return x.Registered
- }
- return nil
-}
-
-func (x *Cluster) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Cluster) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *Cluster) GetAgentVersion() string {
- if x != nil {
- return x.AgentVersion
- }
- return ""
-}
-
-func (x *Cluster) GetActivity() map[string]*ClusterActivity {
- if x != nil {
- return x.Activity
- }
- return nil
-}
-
-func (x *Cluster) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Cluster) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Cluster) GetGroup() *v1.Group {
- if x != nil {
- return x.Group
- }
- return nil
-}
-
-func (x *Cluster) GetManagedName() string {
- if x != nil {
- return x.ManagedName
- }
- return ""
-}
-
-func (x *Cluster) GetProvider() Cluster_Provider {
- if x != nil {
- return x.Provider
- }
- return Cluster_UNKNOWN
-}
-
-func (x *Cluster) GetAffinity() Cluster_Location {
- if x != nil {
- return x.Affinity
- }
- return Cluster_AUTO
-}
-
-func (x *Cluster) GetInfo() *Cluster_Info {
- if x != nil {
- return x.Info
- }
- return nil
-}
-
-func (x *Cluster) GetAuthInfo() *Cluster_AuthInfo {
- if x != nil {
- return x.AuthInfo
- }
- return nil
-}
-
-func (x *Cluster) GetStatus() *Cluster_Status {
- if x != nil {
- return x.Status
- }
- return nil
-}
-
-func (x *Cluster) GetHostCluster() string {
- if x != nil {
- return x.HostCluster
- }
- return ""
-}
-
-func (x *Cluster) GetProfiles() []string {
- if x != nil {
- return x.Profiles
- }
- return nil
-}
-
-func (x *Cluster) GetEnforcerOptions() *Cluster_EnforcerOptions {
- if x != nil {
- return x.EnforcerOptions
- }
- return nil
-}
-
-type ClusterActivity struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // profile is the Chainguard profile to which the source of this activity belongs.
- Profile string `protobuf:"bytes,6,opt,name=profile,proto3" json:"profile,omitempty"`
- // namespace is the namespace in which the source of this cluster activity lives.
- Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
- // controller_name is the name of the Controller CRD which was the source of this
- // activity on the tenant cluster.
- ControllerName string `protobuf:"bytes,2,opt,name=controller_name,json=controllerName,proto3" json:"controller_name,omitempty"`
- // webhook_name is the name of the Webhook CRD which was the source of this
- // activity on the tenant cluster.
- WebhookName string `protobuf:"bytes,3,opt,name=webhook_name,json=webhookName,proto3" json:"webhook_name,omitempty"`
- // spec_hash is the hash of the Controller or Webhook CRD's spec, which forms a
- // loose form of versioning.
- SpecHash string `protobuf:"bytes,4,opt,name=spec_hash,json=specHash,proto3" json:"spec_hash,omitempty"`
- // last_seen tracks the timestamp at which this source was last active.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
-}
-
-func (x *ClusterActivity) Reset() {
- *x = ClusterActivity{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterActivity) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterActivity) ProtoMessage() {}
-
-func (x *ClusterActivity) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterActivity.ProtoReflect.Descriptor instead.
-func (*ClusterActivity) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *ClusterActivity) GetProfile() string {
- if x != nil {
- return x.Profile
- }
- return ""
-}
-
-func (x *ClusterActivity) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
-
-func (x *ClusterActivity) GetControllerName() string {
- if x != nil {
- return x.ControllerName
- }
- return ""
-}
-
-func (x *ClusterActivity) GetWebhookName() string {
- if x != nil {
- return x.WebhookName
- }
- return ""
-}
-
-func (x *ClusterActivity) GetSpecHash() string {
- if x != nil {
- return x.SpecHash
- }
- return ""
-}
-
-func (x *ClusterActivity) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-type ClusterList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Cluster `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *ClusterList) Reset() {
- *x = ClusterList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterList) ProtoMessage() {}
-
-func (x *ClusterList) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterList.ProtoReflect.Descriptor instead.
-func (*ClusterList) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ClusterList) GetItems() []*Cluster {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type ClusterFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // active_since is the timestamp after which returned clusters should have been active.
- // This applies to both cluster registration and when it was "last seen".
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // uidp filers records based on their position in the group hierarchy.
- Uidp *v11.UIDPFilter `protobuf:"bytes,3,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // remote_id is the remote ID of this cluster.
- RemoteId string `protobuf:"bytes,4,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
- // name is the exact name of the cluster.
- Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *ClusterFilter) Reset() {
- *x = ClusterFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterFilter) ProtoMessage() {}
-
-func (x *ClusterFilter) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterFilter.ProtoReflect.Descriptor instead.
-func (*ClusterFilter) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *ClusterFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *ClusterFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (x *ClusterFilter) GetUidp() *v11.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *ClusterFilter) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-func (x *ClusterFilter) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-type ClusterProfilesRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ClusterProfilesRequest) Reset() {
- *x = ClusterProfilesRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterProfilesRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterProfilesRequest) ProtoMessage() {}
-
-func (x *ClusterProfilesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterProfilesRequest.ProtoReflect.Descriptor instead.
-func (*ClusterProfilesRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{8}
-}
-
-type ClusterProfilesResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Profile []*ClusterProfilesResponse_Profile `protobuf:"bytes,1,rep,name=profile,proto3" json:"profile,omitempty"`
-}
-
-func (x *ClusterProfilesResponse) Reset() {
- *x = ClusterProfilesResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[9]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterProfilesResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterProfilesResponse) ProtoMessage() {}
-
-func (x *ClusterProfilesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[9]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterProfilesResponse.ProtoReflect.Descriptor instead.
-func (*ClusterProfilesResponse) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ClusterProfilesResponse) GetProfile() []*ClusterProfilesResponse_Profile {
- if x != nil {
- return x.Profile
- }
- return nil
-}
-
-type ClusterConfigRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // profiles specifies the root profiles we want as part of this configuration.
- Profiles []string `protobuf:"bytes,1,rep,name=profiles,proto3" json:"profiles,omitempty"`
- // EnforcerOptions contains additional Enforcer configuration settings.
- EnforcerOptions *ClusterConfigRequest_EnforcerOptions `protobuf:"bytes,2,opt,name=enforcer_options,json=enforcerOptions,proto3,oneof" json:"enforcer_options,omitempty"`
-}
-
-func (x *ClusterConfigRequest) Reset() {
- *x = ClusterConfigRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[10]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterConfigRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterConfigRequest) ProtoMessage() {}
-
-func (x *ClusterConfigRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[10]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterConfigRequest.ProtoReflect.Descriptor instead.
-func (*ClusterConfigRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *ClusterConfigRequest) GetProfiles() []string {
- if x != nil {
- return x.Profiles
- }
- return nil
-}
-
-func (x *ClusterConfigRequest) GetEnforcerOptions() *ClusterConfigRequest_EnforcerOptions {
- if x != nil {
- return x.EnforcerOptions
- }
- return nil
-}
-
-type ClusterConfigResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- McpConfig []byte `protobuf:"bytes,1,opt,name=mcp_config,json=mcpConfig,proto3" json:"mcp_config,omitempty"`
- TenantConfig []byte `protobuf:"bytes,2,opt,name=tenant_config,json=tenantConfig,proto3" json:"tenant_config,omitempty"`
- // profiles includes the full set of profiles returned (including transitive
- // dependencies of the input profiles)
- Profiles []string `protobuf:"bytes,3,rep,name=profiles,proto3" json:"profiles,omitempty"`
-}
-
-func (x *ClusterConfigResponse) Reset() {
- *x = ClusterConfigResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterConfigResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterConfigResponse) ProtoMessage() {}
-
-func (x *ClusterConfigResponse) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterConfigResponse.ProtoReflect.Descriptor instead.
-func (*ClusterConfigResponse) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *ClusterConfigResponse) GetMcpConfig() []byte {
- if x != nil {
- return x.McpConfig
- }
- return nil
-}
-
-func (x *ClusterConfigResponse) GetTenantConfig() []byte {
- if x != nil {
- return x.TenantConfig
- }
- return nil
-}
-
-func (x *ClusterConfigResponse) GetProfiles() []string {
- if x != nil {
- return x.Profiles
- }
- return nil
-}
-
-type ClusterCIDRRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-}
-
-func (x *ClusterCIDRRequest) Reset() {
- *x = ClusterCIDRRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterCIDRRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterCIDRRequest) ProtoMessage() {}
-
-func (x *ClusterCIDRRequest) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterCIDRRequest.ProtoReflect.Descriptor instead.
-func (*ClusterCIDRRequest) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{12}
-}
-
-type ClusterCIDRResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // cidr_blocks specifies the cidr blocks enforce uses to communicate with clusters.
- CidrBlocks []string `protobuf:"bytes,1,rep,name=cidr_blocks,json=cidrBlocks,proto3" json:"cidr_blocks,omitempty"`
-}
-
-func (x *ClusterCIDRResponse) Reset() {
- *x = ClusterCIDRResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterCIDRResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterCIDRResponse) ProtoMessage() {}
-
-func (x *ClusterCIDRResponse) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterCIDRResponse.ProtoReflect.Descriptor instead.
-func (*ClusterCIDRResponse) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *ClusterCIDRResponse) GetCidrBlocks() []string {
- if x != nil {
- return x.CidrBlocks
- }
- return nil
-}
-
-type ClusterDiscoveryResponse_Result struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Provider Cluster_Provider `protobuf:"varint,1,opt,name=provider,proto3,enum=chainguard.platform.tenant.Cluster_Provider" json:"provider,omitempty"`
- Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"`
- Location Cluster_Location `protobuf:"varint,3,opt,name=location,proto3,enum=chainguard.platform.tenant.Cluster_Location" json:"location,omitempty"`
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- // Types that are assignable to State:
- //
- // *ClusterDiscoveryResponse_Result_Unsupported_
- // *ClusterDiscoveryResponse_Result_NeedsWork_
- // *ClusterDiscoveryResponse_Result_Eligible_
- // *ClusterDiscoveryResponse_Result_Enrolled_
- State isClusterDiscoveryResponse_Result_State `protobuf_oneof:"state"`
-}
-
-func (x *ClusterDiscoveryResponse_Result) Reset() {
- *x = ClusterDiscoveryResponse_Result{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse_Result) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse_Result) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse_Result) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[14]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse_Result.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse_Result) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetProvider() Cluster_Provider {
- if x != nil {
- return x.Provider
- }
- return Cluster_UNKNOWN
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetAccount() string {
- if x != nil {
- return x.Account
- }
- return ""
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetLocation() Cluster_Location {
- if x != nil {
- return x.Location
- }
- return Cluster_AUTO
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (m *ClusterDiscoveryResponse_Result) GetState() isClusterDiscoveryResponse_Result_State {
- if m != nil {
- return m.State
- }
- return nil
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetUnsupported() *ClusterDiscoveryResponse_Result_Unsupported {
- if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Unsupported_); ok {
- return x.Unsupported
- }
- return nil
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetNeedsWork() *ClusterDiscoveryResponse_Result_NeedsWork {
- if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_NeedsWork_); ok {
- return x.NeedsWork
- }
- return nil
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetEligible() *ClusterDiscoveryResponse_Result_Eligible {
- if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Eligible_); ok {
- return x.Eligible
- }
- return nil
-}
-
-func (x *ClusterDiscoveryResponse_Result) GetEnrolled() *ClusterDiscoveryResponse_Result_Enrolled {
- if x, ok := x.GetState().(*ClusterDiscoveryResponse_Result_Enrolled_); ok {
- return x.Enrolled
- }
- return nil
-}
-
-type isClusterDiscoveryResponse_Result_State interface {
- isClusterDiscoveryResponse_Result_State()
-}
-
-type ClusterDiscoveryResponse_Result_Unsupported_ struct {
- // unsupported clusters cannot be enrolled with our
- // Agentless cluster support.
- Unsupported *ClusterDiscoveryResponse_Result_Unsupported `protobuf:"bytes,10,opt,name=unsupported,proto3,oneof"`
-}
-
-type ClusterDiscoveryResponse_Result_NeedsWork_ struct {
- // needs_work clusters can be modified in some way so
- // that they are supported by our Agentless infrastructure.
- NeedsWork *ClusterDiscoveryResponse_Result_NeedsWork `protobuf:"bytes,11,opt,name=needs_work,json=needsWork,proto3,oneof"`
-}
-
-type ClusterDiscoveryResponse_Result_Eligible_ struct {
- // eligible clusters are able to be directly enrolled as
- // agentless tenants immediately. This message contains
- // all of the information needed to enroll this cluster.
- Eligible *ClusterDiscoveryResponse_Result_Eligible `protobuf:"bytes,12,opt,name=eligible,proto3,oneof"`
-}
-
-type ClusterDiscoveryResponse_Result_Enrolled_ struct {
- // enrolled clusters are clusters that have already been
- // enrolled as agentless tenants.
- Enrolled *ClusterDiscoveryResponse_Result_Enrolled `protobuf:"bytes,13,opt,name=enrolled,proto3,oneof"`
-}
-
-func (*ClusterDiscoveryResponse_Result_Unsupported_) isClusterDiscoveryResponse_Result_State() {}
-
-func (*ClusterDiscoveryResponse_Result_NeedsWork_) isClusterDiscoveryResponse_Result_State() {}
-
-func (*ClusterDiscoveryResponse_Result_Eligible_) isClusterDiscoveryResponse_Result_State() {}
-
-func (*ClusterDiscoveryResponse_Result_Enrolled_) isClusterDiscoveryResponse_Result_State() {}
-
-type ClusterDiscoveryResponse_Result_Unsupported struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // reason holds the reason the cluster is not currently supported.
- Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
-}
-
-func (x *ClusterDiscoveryResponse_Result_Unsupported) Reset() {
- *x = ClusterDiscoveryResponse_Result_Unsupported{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse_Result_Unsupported) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse_Result_Unsupported) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse_Result_Unsupported) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[15]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse_Result_Unsupported.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse_Result_Unsupported) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 0}
-}
-
-func (x *ClusterDiscoveryResponse_Result_Unsupported) GetReason() string {
- if x != nil {
- return x.Reason
- }
- return ""
-}
-
-type ClusterDiscoveryResponse_Result_NeedsWork struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // steps holds the set of changes the user needs to make in order
- // for the cluster to become eligible.
- Steps []string `protobuf:"bytes,1,rep,name=steps,proto3" json:"steps,omitempty"`
-}
-
-func (x *ClusterDiscoveryResponse_Result_NeedsWork) Reset() {
- *x = ClusterDiscoveryResponse_Result_NeedsWork{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[16]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse_Result_NeedsWork) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse_Result_NeedsWork) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse_Result_NeedsWork) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[16]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse_Result_NeedsWork.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse_Result_NeedsWork) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 1}
-}
-
-func (x *ClusterDiscoveryResponse_Result_NeedsWork) GetSteps() []string {
- if x != nil {
- return x.Steps
- }
- return nil
-}
-
-type ClusterDiscoveryResponse_Result_Eligible struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Info *Cluster_Info `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
-}
-
-func (x *ClusterDiscoveryResponse_Result_Eligible) Reset() {
- *x = ClusterDiscoveryResponse_Result_Eligible{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[17]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse_Result_Eligible) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse_Result_Eligible) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse_Result_Eligible) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[17]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse_Result_Eligible.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse_Result_Eligible) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 2}
-}
-
-func (x *ClusterDiscoveryResponse_Result_Eligible) GetInfo() *Cluster_Info {
- if x != nil {
- return x.Info
- }
- return nil
-}
-
-type ClusterDiscoveryResponse_Result_Enrolled struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the UIDP of the tenant Cluster.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // profiles contains the set of profiles that this
- // cluster was enrolled with.
- Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
- Info *Cluster_Info `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"`
-}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) Reset() {
- *x = ClusterDiscoveryResponse_Result_Enrolled{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterDiscoveryResponse_Result_Enrolled) ProtoMessage() {}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[18]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterDiscoveryResponse_Result_Enrolled.ProtoReflect.Descriptor instead.
-func (*ClusterDiscoveryResponse_Result_Enrolled) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{3, 0, 3}
-}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) GetProfiles() []string {
- if x != nil {
- return x.Profiles
- }
- return nil
-}
-
-func (x *ClusterDiscoveryResponse_Result_Enrolled) GetInfo() *Cluster_Info {
- if x != nil {
- return x.Info
- }
- return nil
-}
-
-type Cluster_EnforcerOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // +optional
- WebhookFailOpen *bool `protobuf:"varint,1,opt,name=webhook_fail_open,json=webhookFailOpen,proto3,oneof" json:"webhook_fail_open,omitempty"`
- // +optional
- EnableCipCache *bool `protobuf:"varint,2,opt,name=enable_cip_cache,json=enableCipCache,proto3,oneof" json:"enable_cip_cache,omitempty"`
- // +optional
- NamespaceEnforcementMode *Cluster_NamespaceEnforcementMode `protobuf:"varint,3,opt,name=namespace_enforcement_mode,json=namespaceEnforcementMode,proto3,enum=chainguard.platform.tenant.Cluster_NamespaceEnforcementMode,oneof" json:"namespace_enforcement_mode,omitempty"`
-}
-
-func (x *Cluster_EnforcerOptions) Reset() {
- *x = Cluster_EnforcerOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[20]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_EnforcerOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_EnforcerOptions) ProtoMessage() {}
-
-func (x *Cluster_EnforcerOptions) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[20]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_EnforcerOptions.ProtoReflect.Descriptor instead.
-func (*Cluster_EnforcerOptions) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 1}
-}
-
-func (x *Cluster_EnforcerOptions) GetWebhookFailOpen() bool {
- if x != nil && x.WebhookFailOpen != nil {
- return *x.WebhookFailOpen
- }
- return false
-}
-
-func (x *Cluster_EnforcerOptions) GetEnableCipCache() bool {
- if x != nil && x.EnableCipCache != nil {
- return *x.EnableCipCache
- }
- return false
-}
-
-func (x *Cluster_EnforcerOptions) GetNamespaceEnforcementMode() Cluster_NamespaceEnforcementMode {
- if x != nil && x.NamespaceEnforcementMode != nil {
- return *x.NamespaceEnforcementMode
- }
- return Cluster_OptOut
-}
-
-// This is based off of k8s.io/client-go/tools/clientcmd/api/v1.Cluster
-// This can be extracted from kubectl for a named cluster (replace CLUSTER_NAME) with:
-//
-// kubectl config view \
-// --flatten -o jsonpath='{.clusters[?(@.name == "CLUSTER_NAME")].cluster}'
-type Cluster_Info struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Server is the address of the kubernetes cluster (https://hostname:port).
- Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
- // CertificateAuthorityData contains PEM-encoded certificate authority certificates.
- // Overrides CertificateAuthority
- CertificateAuthorityData []byte `protobuf:"bytes,5,opt,name=CertificateAuthorityData,proto3" json:"CertificateAuthorityData,omitempty"`
-}
-
-func (x *Cluster_Info) Reset() {
- *x = Cluster_Info{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[21]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_Info) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_Info) ProtoMessage() {}
-
-func (x *Cluster_Info) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[21]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_Info.ProtoReflect.Descriptor instead.
-func (*Cluster_Info) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 2}
-}
-
-func (x *Cluster_Info) GetServer() string {
- if x != nil {
- return x.Server
- }
- return ""
-}
-
-func (x *Cluster_Info) GetCertificateAuthorityData() []byte {
- if x != nil {
- return x.CertificateAuthorityData
- }
- return nil
-}
-
-// This is based off of k8s.io/client-go/tools/clientcmd/api/v1.AuthInfo
-// This should only ever be used with KinD clusters during testing, it WILL
-// NOT be stored securely.
-type Cluster_AuthInfo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // client_certificate_data contains PEM-encoded data from a client cert file for TLS.
- ClientCertificateData []byte `protobuf:"bytes,2,opt,name=client_certificate_data,json=clientCertificateData,proto3" json:"client_certificate_data,omitempty"`
- // client_key_data contains PEM-encoded data from a client key file for TLS.
- ClientKeyData []byte `protobuf:"bytes,4,opt,name=client_key_data,json=clientKeyData,proto3" json:"client_key_data,omitempty"`
-}
-
-func (x *Cluster_AuthInfo) Reset() {
- *x = Cluster_AuthInfo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[22]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_AuthInfo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_AuthInfo) ProtoMessage() {}
-
-func (x *Cluster_AuthInfo) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[22]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_AuthInfo.ProtoReflect.Descriptor instead.
-func (*Cluster_AuthInfo) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 3}
-}
-
-func (x *Cluster_AuthInfo) GetClientCertificateData() []byte {
- if x != nil {
- return x.ClientCertificateData
- }
- return nil
-}
-
-func (x *Cluster_AuthInfo) GetClientKeyData() []byte {
- if x != nil {
- return x.ClientKeyData
- }
- return nil
-}
-
-type Cluster_Status struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Ready Cluster_Status_State `protobuf:"varint,1,opt,name=ready,proto3,enum=chainguard.platform.tenant.Cluster_Status_State" json:"ready,omitempty"`
- Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
- Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
-}
-
-func (x *Cluster_Status) Reset() {
- *x = Cluster_Status{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[23]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Cluster_Status) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Cluster_Status) ProtoMessage() {}
-
-func (x *Cluster_Status) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[23]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Cluster_Status.ProtoReflect.Descriptor instead.
-func (*Cluster_Status) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{4, 4}
-}
-
-func (x *Cluster_Status) GetReady() Cluster_Status_State {
- if x != nil {
- return x.Ready
- }
- return Cluster_Status_UNKNOWN
-}
-
-func (x *Cluster_Status) GetReason() string {
- if x != nil {
- return x.Reason
- }
- return ""
-}
-
-func (x *Cluster_Status) GetMessage() string {
- if x != nil {
- return x.Message
- }
- return ""
-}
-
-type ClusterProfilesResponse_Profile struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
- Dependencies []string `protobuf:"bytes,3,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
-}
-
-func (x *ClusterProfilesResponse_Profile) Reset() {
- *x = ClusterProfilesResponse_Profile{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[24]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterProfilesResponse_Profile) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterProfilesResponse_Profile) ProtoMessage() {}
-
-func (x *ClusterProfilesResponse_Profile) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[24]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterProfilesResponse_Profile.ProtoReflect.Descriptor instead.
-func (*ClusterProfilesResponse_Profile) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{9, 0}
-}
-
-func (x *ClusterProfilesResponse_Profile) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *ClusterProfilesResponse_Profile) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *ClusterProfilesResponse_Profile) GetDependencies() []string {
- if x != nil {
- return x.Dependencies
- }
- return nil
-}
-
-type ClusterConfigRequest_EnforcerOptions struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // +optional
- WebhookFailOpen *bool `protobuf:"varint,1,opt,name=webhook_fail_open,json=webhookFailOpen,proto3,oneof" json:"webhook_fail_open,omitempty"`
- // +optional
- EnableCipCache *bool `protobuf:"varint,2,opt,name=enable_cip_cache,json=enableCipCache,proto3,oneof" json:"enable_cip_cache,omitempty"`
- // +optional
- NamespaceEnforcementMode *ClusterConfigRequest_NamespaceEnforcementMode `protobuf:"varint,3,opt,name=namespace_enforcement_mode,json=namespaceEnforcementMode,proto3,enum=chainguard.platform.tenant.ClusterConfigRequest_NamespaceEnforcementMode,oneof" json:"namespace_enforcement_mode,omitempty"`
-}
-
-func (x *ClusterConfigRequest_EnforcerOptions) Reset() {
- *x = ClusterConfigRequest_EnforcerOptions{}
- if protoimpl.UnsafeEnabled {
- mi := &file_cluster_platform_proto_msgTypes[25]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ClusterConfigRequest_EnforcerOptions) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ClusterConfigRequest_EnforcerOptions) ProtoMessage() {}
-
-func (x *ClusterConfigRequest_EnforcerOptions) ProtoReflect() protoreflect.Message {
- mi := &file_cluster_platform_proto_msgTypes[25]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ClusterConfigRequest_EnforcerOptions.ProtoReflect.Descriptor instead.
-func (*ClusterConfigRequest_EnforcerOptions) Descriptor() ([]byte, []int) {
- return file_cluster_platform_proto_rawDescGZIP(), []int{10, 0}
-}
-
-func (x *ClusterConfigRequest_EnforcerOptions) GetWebhookFailOpen() bool {
- if x != nil && x.WebhookFailOpen != nil {
- return *x.WebhookFailOpen
- }
- return false
-}
-
-func (x *ClusterConfigRequest_EnforcerOptions) GetEnableCipCache() bool {
- if x != nil && x.EnableCipCache != nil {
- return *x.EnableCipCache
- }
- return false
-}
-
-func (x *ClusterConfigRequest_EnforcerOptions) GetNamespaceEnforcementMode() ClusterConfigRequest_NamespaceEnforcementMode {
- if x != nil && x.NamespaceEnforcementMode != nil {
- return *x.NamespaceEnforcementMode
- }
- return ClusterConfigRequest_OptOut
-}
-
-var File_cluster_platform_proto protoreflect.FileDescriptor
-
-var file_cluster_platform_proto_rawDesc = []byte{
- 0x0a, 0x16, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
- 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
- 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0x7a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a,
- 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x2e, 0x0a, 0x14,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xbf, 0x02, 0x0a,
- 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
- 0x72, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
- 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74,
- 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x05, 0x53,
- 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44,
- 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x57, 0x4f, 0x52, 0x4b,
- 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4c, 0x49, 0x47, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03,
- 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xee,
- 0x07, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76,
- 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x72,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x73, 0x1a, 0xfa, 0x06, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a,
- 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x48, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x6b, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
- 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52,
- 0x0b, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x0a,
- 0x6e, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x45, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4e, 0x65,
- 0x65, 0x64, 0x73, 0x57, 0x6f, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x65, 0x64, 0x73,
- 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x62, 0x0a, 0x08, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f,
- 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x08,
- 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x62, 0x0a, 0x08, 0x65, 0x6e, 0x72, 0x6f,
- 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44,
- 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64,
- 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x1a, 0x25, 0x0a, 0x0b,
- 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72,
- 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61,
- 0x73, 0x6f, 0x6e, 0x1a, 0x21, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x73, 0x57, 0x6f, 0x72, 0x6b,
- 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x1a, 0x48, 0x0a, 0x08, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62,
- 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
- 0x1a, 0x74, 0x0a, 0x08, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f,
- 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22,
- 0xf7, 0x0f, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64,
- 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x65, 0x72, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65,
- 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x18, 0x0a,
- 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74,
- 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x61, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x08,
- 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67,
- 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d,
- 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72,
- 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76,
- 0x69, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x08, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79,
- 0x18, 0x69, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3c,
- 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x09,
- 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61,
- 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x68,
- 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x6a, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a,
- 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x6b, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x10, 0x65, 0x6e,
- 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x6c,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63,
- 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x6e, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x1a,
- 0x68, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xbc, 0x02, 0x0a, 0x0f, 0x45, 0x6e,
- 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a,
- 0x11, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70,
- 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x65, 0x62, 0x68,
- 0x6f, 0x6f, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d,
- 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63,
- 0x68, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x43, 0x69, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7f, 0x0a,
- 0x1a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72,
- 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48,
- 0x02, 0x52, 0x18, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f,
- 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14,
- 0x0a, 0x12, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f,
- 0x6f, 0x70, 0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f,
- 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d,
- 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x44, 0x61, 0x74, 0x61, 0x1a, 0x6a, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f,
- 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0c, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65,
- 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0c, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61,
- 0x1a, 0xb1, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x72,
- 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x72, 0x65,
- 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52,
- 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61,
- 0x64, 0x79, 0x10, 0x02, 0x22, 0x31, 0x0a, 0x18, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65,
- 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
- 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x10, 0x01, 0x22, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
- 0x12, 0x07, 0x0a, 0x03, 0x47, 0x4b, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4b, 0x53,
- 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x52, 0x55, 0x4e, 0x10,
- 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x43, 0x53, 0x10, 0x14, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50,
- 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x15, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x49,
- 0x4e, 0x44, 0x10, 0x64, 0x22, 0x3e, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53,
- 0x5f, 0x45, 0x41, 0x53, 0x54, 0x10, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x53, 0x5f, 0x43, 0x45,
- 0x4e, 0x54, 0x52, 0x41, 0x4c, 0x10, 0x66, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x5f, 0x57, 0x45,
- 0x53, 0x54, 0x10, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
- 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a,
- 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
- 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
- 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21,
- 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x37,
- 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c,
- 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x48, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69,
- 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e,
- 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49,
- 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x1b,
- 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
- 0x18, 0x0a, 0x16, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x66,
- 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x63, 0x0a, 0x07,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a,
- 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65,
- 0x73, 0x22, 0xb9, 0x04, 0x0a, 0x14, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63,
- 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x40, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xca, 0x02, 0x0a, 0x0f, 0x45, 0x6e, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x11,
- 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70, 0x65,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x65, 0x62, 0x68, 0x6f,
- 0x6f, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a,
- 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x63, 0x68,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c,
- 0x65, 0x43, 0x69, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8c, 0x01, 0x0a,
- 0x1a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72,
- 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x02, 0x52, 0x18,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
- 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f,
- 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x6f, 0x70, 0x65,
- 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x69, 0x70,
- 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x18, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64,
- 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x10, 0x00, 0x12, 0x09, 0x0a,
- 0x05, 0x4f, 0x70, 0x74, 0x49, 0x6e, 0x10, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x77, 0x0a,
- 0x15, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x63, 0x70, 0x5f, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x63, 0x70, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
- 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x36, 0x0a, 0x13,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x69, 0x64, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
- 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x69, 0x64, 0x72, 0x42, 0x6c,
- 0x6f, 0x63, 0x6b, 0x73, 0x32, 0x8e, 0x0a, 0x0a, 0x08, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
- 0x73, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x22, 0x7e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x07, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31,
- 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
- 0x0a, 0x04, 0xf5, 0x03, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0xc0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x30,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d,
- 0x2a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf8, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x37, 0x0a,
- 0x2c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f,
- 0x76, 0x65, 0x72, 0x12, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
- 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
- 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xf9, 0x03, 0xf7, 0x03, 0x12, 0x85, 0x01, 0x0a,
- 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x1a, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x15, 0x12, 0x13, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
- 0xf7, 0x03, 0x10, 0x01, 0x12, 0xc3, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
- 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75,
- 0x73, 0x74, 0x65, 0x72, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31,
- 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xf6, 0x03, 0xc2, 0xf0, 0x8e,
- 0xfc, 0x0b, 0x37, 0x0a, 0x2c, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x63,
- 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x7d, 0x0a, 0x08, 0x50, 0x72,
- 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
- 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x08, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02, 0x12, 0x00, 0x12, 0x77, 0x0a, 0x06, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x02,
- 0x12, 0x00, 0x12, 0x71, 0x0a, 0x04, 0x43, 0x49, 0x44, 0x52, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43,
- 0x49, 0x44, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43,
- 0x49, 0x44, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x02, 0x12, 0x00, 0x42, 0x72, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1a,
- 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6c,
- 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b,
- 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
-}
-
-var (
- file_cluster_platform_proto_rawDescOnce sync.Once
- file_cluster_platform_proto_rawDescData = file_cluster_platform_proto_rawDesc
-)
-
-func file_cluster_platform_proto_rawDescGZIP() []byte {
- file_cluster_platform_proto_rawDescOnce.Do(func() {
- file_cluster_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_cluster_platform_proto_rawDescData)
- })
- return file_cluster_platform_proto_rawDescData
-}
-
-var file_cluster_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
-var file_cluster_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
-var file_cluster_platform_proto_goTypes = []interface{}{
- (ClusterDiscoveryRequest_State)(0), // 0: chainguard.platform.tenant.ClusterDiscoveryRequest.State
- (Cluster_NamespaceEnforcementMode)(0), // 1: chainguard.platform.tenant.Cluster.NamespaceEnforcementMode
- (Cluster_Provider)(0), // 2: chainguard.platform.tenant.Cluster.Provider
- (Cluster_Location)(0), // 3: chainguard.platform.tenant.Cluster.Location
- (Cluster_Status_State)(0), // 4: chainguard.platform.tenant.Cluster.Status.State
- (ClusterConfigRequest_NamespaceEnforcementMode)(0), // 5: chainguard.platform.tenant.ClusterConfigRequest.NamespaceEnforcementMode
- (*CreateClusterRequest)(nil), // 6: chainguard.platform.tenant.CreateClusterRequest
- (*DeleteClusterRequest)(nil), // 7: chainguard.platform.tenant.DeleteClusterRequest
- (*ClusterDiscoveryRequest)(nil), // 8: chainguard.platform.tenant.ClusterDiscoveryRequest
- (*ClusterDiscoveryResponse)(nil), // 9: chainguard.platform.tenant.ClusterDiscoveryResponse
- (*Cluster)(nil), // 10: chainguard.platform.tenant.Cluster
- (*ClusterActivity)(nil), // 11: chainguard.platform.tenant.ClusterActivity
- (*ClusterList)(nil), // 12: chainguard.platform.tenant.ClusterList
- (*ClusterFilter)(nil), // 13: chainguard.platform.tenant.ClusterFilter
- (*ClusterProfilesRequest)(nil), // 14: chainguard.platform.tenant.ClusterProfilesRequest
- (*ClusterProfilesResponse)(nil), // 15: chainguard.platform.tenant.ClusterProfilesResponse
- (*ClusterConfigRequest)(nil), // 16: chainguard.platform.tenant.ClusterConfigRequest
- (*ClusterConfigResponse)(nil), // 17: chainguard.platform.tenant.ClusterConfigResponse
- (*ClusterCIDRRequest)(nil), // 18: chainguard.platform.tenant.ClusterCIDRRequest
- (*ClusterCIDRResponse)(nil), // 19: chainguard.platform.tenant.ClusterCIDRResponse
- (*ClusterDiscoveryResponse_Result)(nil), // 20: chainguard.platform.tenant.ClusterDiscoveryResponse.Result
- (*ClusterDiscoveryResponse_Result_Unsupported)(nil), // 21: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Unsupported
- (*ClusterDiscoveryResponse_Result_NeedsWork)(nil), // 22: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.NeedsWork
- (*ClusterDiscoveryResponse_Result_Eligible)(nil), // 23: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible
- (*ClusterDiscoveryResponse_Result_Enrolled)(nil), // 24: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled
- nil, // 25: chainguard.platform.tenant.Cluster.ActivityEntry
- (*Cluster_EnforcerOptions)(nil), // 26: chainguard.platform.tenant.Cluster.EnforcerOptions
- (*Cluster_Info)(nil), // 27: chainguard.platform.tenant.Cluster.Info
- (*Cluster_AuthInfo)(nil), // 28: chainguard.platform.tenant.Cluster.AuthInfo
- (*Cluster_Status)(nil), // 29: chainguard.platform.tenant.Cluster.Status
- (*ClusterProfilesResponse_Profile)(nil), // 30: chainguard.platform.tenant.ClusterProfilesResponse.Profile
- (*ClusterConfigRequest_EnforcerOptions)(nil), // 31: chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions
- (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp
- (*v1.Group)(nil), // 33: chainguard.platform.iam.Group
- (*v11.UIDPFilter)(nil), // 34: chainguard.platform.common.UIDPFilter
- (*emptypb.Empty)(nil), // 35: google.protobuf.Empty
-}
-var file_cluster_platform_proto_depIdxs = []int32{
- 10, // 0: chainguard.platform.tenant.CreateClusterRequest.cluster:type_name -> chainguard.platform.tenant.Cluster
- 2, // 1: chainguard.platform.tenant.ClusterDiscoveryRequest.providers:type_name -> chainguard.platform.tenant.Cluster.Provider
- 0, // 2: chainguard.platform.tenant.ClusterDiscoveryRequest.states:type_name -> chainguard.platform.tenant.ClusterDiscoveryRequest.State
- 20, // 3: chainguard.platform.tenant.ClusterDiscoveryResponse.results:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result
- 32, // 4: chainguard.platform.tenant.Cluster.registered:type_name -> google.protobuf.Timestamp
- 32, // 5: chainguard.platform.tenant.Cluster.last_seen:type_name -> google.protobuf.Timestamp
- 25, // 6: chainguard.platform.tenant.Cluster.activity:type_name -> chainguard.platform.tenant.Cluster.ActivityEntry
- 33, // 7: chainguard.platform.tenant.Cluster.group:type_name -> chainguard.platform.iam.Group
- 2, // 8: chainguard.platform.tenant.Cluster.provider:type_name -> chainguard.platform.tenant.Cluster.Provider
- 3, // 9: chainguard.platform.tenant.Cluster.affinity:type_name -> chainguard.platform.tenant.Cluster.Location
- 27, // 10: chainguard.platform.tenant.Cluster.info:type_name -> chainguard.platform.tenant.Cluster.Info
- 28, // 11: chainguard.platform.tenant.Cluster.auth_info:type_name -> chainguard.platform.tenant.Cluster.AuthInfo
- 29, // 12: chainguard.platform.tenant.Cluster.status:type_name -> chainguard.platform.tenant.Cluster.Status
- 26, // 13: chainguard.platform.tenant.Cluster.enforcer_options:type_name -> chainguard.platform.tenant.Cluster.EnforcerOptions
- 32, // 14: chainguard.platform.tenant.ClusterActivity.last_seen:type_name -> google.protobuf.Timestamp
- 10, // 15: chainguard.platform.tenant.ClusterList.items:type_name -> chainguard.platform.tenant.Cluster
- 32, // 16: chainguard.platform.tenant.ClusterFilter.active_since:type_name -> google.protobuf.Timestamp
- 34, // 17: chainguard.platform.tenant.ClusterFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 30, // 18: chainguard.platform.tenant.ClusterProfilesResponse.profile:type_name -> chainguard.platform.tenant.ClusterProfilesResponse.Profile
- 31, // 19: chainguard.platform.tenant.ClusterConfigRequest.enforcer_options:type_name -> chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions
- 2, // 20: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.provider:type_name -> chainguard.platform.tenant.Cluster.Provider
- 3, // 21: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.location:type_name -> chainguard.platform.tenant.Cluster.Location
- 21, // 22: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.unsupported:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Unsupported
- 22, // 23: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.needs_work:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.NeedsWork
- 23, // 24: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.eligible:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible
- 24, // 25: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.enrolled:type_name -> chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled
- 27, // 26: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Eligible.info:type_name -> chainguard.platform.tenant.Cluster.Info
- 27, // 27: chainguard.platform.tenant.ClusterDiscoveryResponse.Result.Enrolled.info:type_name -> chainguard.platform.tenant.Cluster.Info
- 11, // 28: chainguard.platform.tenant.Cluster.ActivityEntry.value:type_name -> chainguard.platform.tenant.ClusterActivity
- 1, // 29: chainguard.platform.tenant.Cluster.EnforcerOptions.namespace_enforcement_mode:type_name -> chainguard.platform.tenant.Cluster.NamespaceEnforcementMode
- 4, // 30: chainguard.platform.tenant.Cluster.Status.ready:type_name -> chainguard.platform.tenant.Cluster.Status.State
- 5, // 31: chainguard.platform.tenant.ClusterConfigRequest.EnforcerOptions.namespace_enforcement_mode:type_name -> chainguard.platform.tenant.ClusterConfigRequest.NamespaceEnforcementMode
- 6, // 32: chainguard.platform.tenant.Clusters.Create:input_type -> chainguard.platform.tenant.CreateClusterRequest
- 7, // 33: chainguard.platform.tenant.Clusters.Delete:input_type -> chainguard.platform.tenant.DeleteClusterRequest
- 8, // 34: chainguard.platform.tenant.Clusters.Discover:input_type -> chainguard.platform.tenant.ClusterDiscoveryRequest
- 13, // 35: chainguard.platform.tenant.Clusters.List:input_type -> chainguard.platform.tenant.ClusterFilter
- 10, // 36: chainguard.platform.tenant.Clusters.Update:input_type -> chainguard.platform.tenant.Cluster
- 14, // 37: chainguard.platform.tenant.Clusters.Profiles:input_type -> chainguard.platform.tenant.ClusterProfilesRequest
- 16, // 38: chainguard.platform.tenant.Clusters.Config:input_type -> chainguard.platform.tenant.ClusterConfigRequest
- 18, // 39: chainguard.platform.tenant.Clusters.CIDR:input_type -> chainguard.platform.tenant.ClusterCIDRRequest
- 10, // 40: chainguard.platform.tenant.Clusters.Create:output_type -> chainguard.platform.tenant.Cluster
- 35, // 41: chainguard.platform.tenant.Clusters.Delete:output_type -> google.protobuf.Empty
- 9, // 42: chainguard.platform.tenant.Clusters.Discover:output_type -> chainguard.platform.tenant.ClusterDiscoveryResponse
- 12, // 43: chainguard.platform.tenant.Clusters.List:output_type -> chainguard.platform.tenant.ClusterList
- 10, // 44: chainguard.platform.tenant.Clusters.Update:output_type -> chainguard.platform.tenant.Cluster
- 15, // 45: chainguard.platform.tenant.Clusters.Profiles:output_type -> chainguard.platform.tenant.ClusterProfilesResponse
- 17, // 46: chainguard.platform.tenant.Clusters.Config:output_type -> chainguard.platform.tenant.ClusterConfigResponse
- 19, // 47: chainguard.platform.tenant.Clusters.CIDR:output_type -> chainguard.platform.tenant.ClusterCIDRResponse
- 40, // [40:48] is the sub-list for method output_type
- 32, // [32:40] is the sub-list for method input_type
- 32, // [32:32] is the sub-list for extension type_name
- 32, // [32:32] is the sub-list for extension extendee
- 0, // [0:32] is the sub-list for field type_name
-}
-
-func init() { file_cluster_platform_proto_init() }
-func file_cluster_platform_proto_init() {
- if File_cluster_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_cluster_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateClusterRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteClusterRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterActivity); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterProfilesRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterProfilesResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterConfigRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterConfigResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterCIDRRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterCIDRResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse_Result); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse_Result_Unsupported); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse_Result_NeedsWork); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse_Result_Eligible); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterDiscoveryResponse_Result_Enrolled); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_EnforcerOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_Info); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_AuthInfo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Cluster_Status); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterProfilesResponse_Profile); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_cluster_platform_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ClusterConfigRequest_EnforcerOptions); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_cluster_platform_proto_msgTypes[4].OneofWrappers = []interface{}{}
- file_cluster_platform_proto_msgTypes[10].OneofWrappers = []interface{}{}
- file_cluster_platform_proto_msgTypes[14].OneofWrappers = []interface{}{
- (*ClusterDiscoveryResponse_Result_Unsupported_)(nil),
- (*ClusterDiscoveryResponse_Result_NeedsWork_)(nil),
- (*ClusterDiscoveryResponse_Result_Eligible_)(nil),
- (*ClusterDiscoveryResponse_Result_Enrolled_)(nil),
- }
- file_cluster_platform_proto_msgTypes[20].OneofWrappers = []interface{}{}
- file_cluster_platform_proto_msgTypes[25].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_cluster_platform_proto_rawDesc,
- NumEnums: 6,
- NumMessages: 26,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_cluster_platform_proto_goTypes,
- DependencyIndexes: file_cluster_platform_proto_depIdxs,
- EnumInfos: file_cluster_platform_proto_enumTypes,
- MessageInfos: file_cluster_platform_proto_msgTypes,
- }.Build()
- File_cluster_platform_proto = out.File
- file_cluster_platform_proto_rawDesc = nil
- file_cluster_platform_proto_goTypes = nil
- file_cluster_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/cluster.platform.pb.gw.go b/proto/platform/tenant/v1/cluster.platform.pb.gw.go
deleted file mode 100644
index dc3d0b60..00000000
--- a/proto/platform/tenant/v1/cluster.platform.pb.gw.go
+++ /dev/null
@@ -1,833 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: cluster.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-func request_Clusters_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateClusterRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Cluster); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Create_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CreateClusterRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Cluster); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["parent_id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "parent_id")
- }
-
- protoReq.ParentId, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "parent_id", err)
- }
-
- msg, err := server.Create(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteClusterRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteClusterRequest
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Delete(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_Discover_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterDiscoveryRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Discover(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Discover_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterDiscoveryRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Discover(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-var (
- filter_Clusters_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Clusters_List_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Clusters_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_List_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Clusters_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_Update_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Cluster
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Update_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq Cluster
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["id"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
- }
-
- protoReq.Id, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
- }
-
- msg, err := server.Update(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_Profiles_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterProfilesRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Profiles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Profiles_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterProfilesRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Profiles(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_Config_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterConfigRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.Config(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_Config_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterConfigRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.Config(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-func request_Clusters_CIDR_0(ctx context.Context, marshaler runtime.Marshaler, client ClustersClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterCIDRRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.CIDR(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Clusters_CIDR_0(ctx context.Context, marshaler runtime.Marshaler, server ClustersServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq ClusterCIDRRequest
- var metadata runtime.ServerMetadata
-
- newReader, berr := utilities.IOReaderFactory(req.Body)
- if berr != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
- }
- if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.CIDR(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterClustersHandlerServer registers the http handlers for service Clusters to "mux".
-// UnaryRPC :call ClustersServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterClustersHandlerFromEndpoint instead.
-func RegisterClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ClustersServer) error {
-
- mux.Handle("POST", pattern_Clusters_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Create", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Create_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Clusters_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Delete", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Delete_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Discover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Discover", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Discover_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Discover_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Clusters_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Clusters_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Update", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Update_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Profiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Profiles", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Profiles"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Profiles_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Profiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Config_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Config", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Config"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_Config_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Config_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_CIDR_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/CIDR", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/CIDR"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Clusters_CIDR_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_CIDR_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterClustersHandlerFromEndpoint is same as RegisterClustersHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterClustersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterClustersHandler(ctx, mux, conn)
-}
-
-// RegisterClustersHandler registers the http handlers for service Clusters to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterClustersHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterClustersHandlerClient(ctx, mux, NewClustersClient(conn))
-}
-
-// RegisterClustersHandlerClient registers the http handlers for service Clusters
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ClustersClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ClustersClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "ClustersClient" to call the correct interceptors.
-func RegisterClustersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ClustersClient) error {
-
- mux.Handle("POST", pattern_Clusters_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Create", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{parent_id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Create_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("DELETE", pattern_Clusters_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Delete", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Delete_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Discover_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Discover", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Discover_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Discover_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("GET", pattern_Clusters_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("PUT", pattern_Clusters_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Update", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{id=**}"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Update_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Profiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Profiles", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Profiles"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Profiles_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Profiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_Config_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/Config", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/Config"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_Config_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_Config_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- mux.Handle("POST", pattern_Clusters_CIDR_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Clusters/CIDR", runtime.WithHTTPPathPattern("/chainguard.platform.tenant.Clusters/CIDR"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Clusters_CIDR_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Clusters_CIDR_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Clusters_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "parent_id"}, ""))
-
- pattern_Clusters_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "id"}, ""))
-
- pattern_Clusters_Discover_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "clusters"}, ""))
-
- pattern_Clusters_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "clusters"}, ""))
-
- pattern_Clusters_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3}, []string{"tenant", "v1", "clusters", "id"}, ""))
-
- pattern_Clusters_Profiles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "Profiles"}, ""))
-
- pattern_Clusters_Config_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "Config"}, ""))
-
- pattern_Clusters_CIDR_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"chainguard.platform.tenant.Clusters", "CIDR"}, ""))
-)
-
-var (
- forward_Clusters_Create_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_Delete_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_Discover_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_List_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_Update_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_Profiles_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_Config_0 = runtime.ForwardResponseMessage
-
- forward_Clusters_CIDR_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/cluster.platform.proto b/proto/platform/tenant/v1/cluster.platform.proto
deleted file mode 100644
index de125115..00000000
--- a/proto/platform/tenant/v1/cluster.platform.proto
+++ /dev/null
@@ -1,479 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantClusterProto";
-
-package chainguard.platform.tenant;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "annotations/events.proto";
-import "platform/common/v1/uidp.platform.proto";
-import "platform/iam/v1/group.platform.proto";
-
-service Clusters {
- rpc Create(CreateClusterRequest) returns (Cluster) {
- option (google.api.http) = {
- post: "/tenant/v1/clusters/{parent_id=**}"
- body: "cluster"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- CAP_TENANT_CLUSTERS_CREATE,
- // Creating a managed Cluster entails creating a RoleBinding
- // for the cluster's identity, so check that the caller has
- // permission to create RoleBindings as well.
- CAP_IAM_ROLE_BINDINGS_CREATE
- ]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.tenant.cluster.created.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Delete(DeleteClusterRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/tenant/v1/clusters/{id=**}"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_CLUSTERS_DELETE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.tenant.cluster.deleted.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Discover(ClusterDiscoveryRequest) returns (ClusterDiscoveryResponse) {
- option (google.api.http) = {
- post: "/tenant/v1/clusters"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [
- // This API is used to discover all of the clusters accessible
- // to the IAM roles associated with the group specified in the
- // request, use this special capability to cover this permission.
- CAP_TENANT_CLUSTERS_DISCOVER,
- // As part of the discovery response we return "enrolled"
- // clusters, so check the List capability.
- CAP_TENANT_CLUSTERS_LIST
- ]
- }
- };
- }
-
- rpc List(ClusterFilter) returns (ClusterList) {
- option (google.api.http) = {
- get: "/tenant/v1/clusters"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_CLUSTERS_LIST]
- unscoped: true
- }
- };
- }
-
- rpc Update(Cluster) returns (Cluster) {
- option (google.api.http) = {
- put: "/tenant/v1/clusters/{id=**}"
- body: "*"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_CLUSTERS_UPDATE]
- }
- };
- option (chainguard.annotations.events) = {
- type: "dev.chainguard.api.tenant.cluster.updated.v1"
- extensions: ["group"]
- audience: CUSTOMER
- };
- }
-
- rpc Profiles(ClusterProfilesRequest) returns (ClusterProfilesResponse) {
- option (chainguard.annotations.iam) = {
- // Just check that the caller is registered.
- enabled: {}
- };
- }
-
- rpc Config(ClusterConfigRequest) returns (ClusterConfigResponse) {
- option (chainguard.annotations.iam) = {
- // Just check that the caller is registered.
- enabled: {}
- };
- }
-
- rpc CIDR(ClusterCIDRRequest) returns (ClusterCIDRResponse) {
- option (chainguard.annotations.iam) = {
- // Just check that the caller is registered.
- enabled: {}
- };
- }
-}
-
-message CreateClusterRequest {
- // parent_id, The Group under which this Cluster resides.
- string parent_id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // Cluster is the definition of the managed cluster to create.
- Cluster cluster = 2;
-}
-
-message DeleteClusterRequest {
- // id is the exact UIDP of the record.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-}
-
-message ClusterDiscoveryRequest {
- // id is the exact UIDP of the group to impersonate to search for clusters.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // providers is the list of providers to perform discovery on.
- repeated Cluster.Provider providers = 2;
-
- // profiles includes the set of profiles to perform discovery for,
- // which may impact eligibility (some profiles may not be supported
- // on some providers).
- repeated string profiles = 3;
-
- // states is a collection of the states to return, or all if
- // none are specified.
- repeated State states = 4;
-
- enum State {
- UNKNOWN = 0;
- UNSUPPORTED = 1;
- NEEDS_WORK = 2;
- ELIGIBLE = 3;
- ENROLLED = 4;
- }
-}
-
-message ClusterDiscoveryResponse {
- repeated Result results = 1;
-
- message Result {
- Cluster.Provider provider = 1;
- string account = 2;
- Cluster.Location location = 3;
- string name = 4;
-
- oneof state {
- // unsupported clusters cannot be enrolled with our
- // Agentless cluster support.
- Unsupported unsupported = 10;
-
- // needs_work clusters can be modified in some way so
- // that they are supported by our Agentless infrastructure.
- NeedsWork needs_work = 11;
-
- // eligible clusters are able to be directly enrolled as
- // agentless tenants immediately. This message contains
- // all of the information needed to enroll this cluster.
- Eligible eligible = 12;
-
- // enrolled clusters are clusters that have already been
- // enrolled as agentless tenants.
- Enrolled enrolled = 13;
- }
-
- message Unsupported {
- // reason holds the reason the cluster is not currently supported.
- string reason = 1;
- }
-
- message NeedsWork {
- // steps holds the set of changes the user needs to make in order
- // for the cluster to become eligible.
- repeated string steps = 1;
- }
-
- message Eligible {
- chainguard.platform.tenant.Cluster.Info info = 1;
- }
-
- message Enrolled {
- // id is the UIDP of the tenant Cluster.
- string id = 1;
-
- // profiles contains the set of profiles that this
- // cluster was enrolled with.
- repeated string profiles = 2;
-
- chainguard.platform.tenant.Cluster.Info info = 3;
- }
- }
-}
-
-message Cluster {
- // id, The Cluster UIDP under which this Cluster resides.
- string id = 1 [(chainguard.annotations.iam_scope) = true];
-
- // remote_id is the remote ID of this cluster.
- string remote_id = 2;
-
- // issuer is the identity issuer tied to this cluster.
- string issuer = 3;
-
- // registered tracks the timestamp at which this cluster was registered.
- google.protobuf.Timestamp registered = 4;
-
- // last_seen tracks the timestamp at which this cluster was last seen.
- google.protobuf.Timestamp last_seen = 5;
-
- // version holds the Kubernetes version last reported by the cluster.
- string version = 6;
-
- // agent_version holds the version of the Chainguard agent last reported by the cluster.
- string agent_version = 7;
-
- // activity is a mapping from "Source" URLs to an activity record summarizing
- // recent activity from this source.
- map activity = 8;
-
- // name of the cluster.
- string name = 9;
-
- // a short description of this cluster.
- string description = 10;
-
- // group the cluster resides in
- chainguard.platform.iam.Group group = 99;
-
- /////////////////////////////////////////////
- // Group "managed" options starting at 100 //
- /////////////////////////////////////////////
-
- // managed_name is the unique name we have given to this cluster's managed agent.
- // This field is output-only, and is populated only when this cluster is "managed".
- string managed_name = 100;
-
- // provider holds the flavor of cluster provider, which is used to determine how we
- // authenticate with the cluster.
- Provider provider = 101;
-
- // affinity specifies a scheduling preference for where to run the managed agent.
- // Other factors, such as the provider may be taken into account when choosing a
- // host cluster.
- Location affinity = 105;
-
- // info contains the cluster information from the kubeconfig context.
- Info info = 102;
-
- // auth_info holds authentication details for connecting to KinD in test scenarios.
- AuthInfo auth_info = 104;
-
- // status contains the managed cluster's status.
- Status status = 103;
-
- // host_cluster surfaces the opaque identifier for the Chainguard cluster hosting
- // this agent.
- string host_cluster = 106;
-
- // profiles specifies the root set of tenant configurations that we want to run
- // on this cluster.
- repeated string profiles = 107;
-
- // EnforcerOptions contains additional Enforcer configuration settings.
- // +optional
- optional EnforcerOptions enforcer_options = 108;
-
- message EnforcerOptions {
- // +optional
- optional bool webhook_fail_open = 1;
- // +optional
- optional bool enable_cip_cache = 2;
- // +optional
- optional NamespaceEnforcementMode namespace_enforcement_mode = 3;
- }
-
- enum NamespaceEnforcementMode {
- OptOut = 0;
- OptIn = 1;
- }
-
- enum Provider {
- UNKNOWN = 0;
- GKE = 1;
- EKS = 2;
-
- // GCP Services (10+)
- CLOUD_RUN = 10;
-
- // AWS Services (20+)
- ECS = 20;
- APP_RUNNER = 21;
-
- // For testing.
- KIND = 100;
- }
-
- enum Location {
- AUTO = 0;
-
- // Use 1xx for US
- US_EAST = 101;
- US_CENTRAL = 102;
- US_WEST = 103;
-
- // TODO: Segment up other areas
- }
-
- // This is based off of k8s.io/client-go/tools/clientcmd/api/v1.Cluster
- // This can be extracted from kubectl for a named cluster (replace CLUSTER_NAME) with:
- // kubectl config view \
- // --flatten -o jsonpath='{.clusters[?(@.name == "CLUSTER_NAME")].cluster}'
- message Info {
- // Server is the address of the kubernetes cluster (https://hostname:port).
- string server = 1;
-
- // TODO: TLSServerName = 2;
-
- // TODO: InsecureSkipTLSVerify = 3;
-
- // TODO: CertificateAuthority = 4;
-
- // CertificateAuthorityData contains PEM-encoded certificate authority certificates.
- // Overrides CertificateAuthority
- bytes CertificateAuthorityData = 5;
-
- // TODO: ProxyURL = 6;
-
- // TODO: Extensions = 7;
- }
-
- // This is based off of k8s.io/client-go/tools/clientcmd/api/v1.AuthInfo
- // This should only ever be used with KinD clusters during testing, it WILL
- // NOT be stored securely.
- message AuthInfo {
- // client_certificate_data contains PEM-encoded data from a client cert file for TLS.
- bytes client_certificate_data = 2;
-
- // client_key_data contains PEM-encoded data from a client key file for TLS.
- bytes client_key_data = 4;
- }
-
- message Status {
- enum State {
- UNKNOWN = 0;
- Ready = 1;
- NotReady = 2;
- }
-
- State ready = 1;
- string reason = 2;
- string message = 3;
- }
-}
-
-message ClusterActivity {
- // profile is the Chainguard profile to which the source of this activity belongs.
- string profile = 6;
-
- // namespace is the namespace in which the source of this cluster activity lives.
- string namespace = 1;
-
- // controller_name is the name of the Controller CRD which was the source of this
- // activity on the tenant cluster.
- string controller_name = 2;
-
- // webhook_name is the name of the Webhook CRD which was the source of this
- // activity on the tenant cluster.
- string webhook_name = 3;
-
- // spec_hash is the hash of the Controller or Webhook CRD's spec, which forms a
- // loose form of versioning.
- string spec_hash = 4;
-
- // last_seen tracks the timestamp at which this source was last active.
- google.protobuf.Timestamp last_seen = 5;
-}
-
-message ClusterList {
- repeated Cluster items = 1;
-}
-
-message ClusterFilter {
- // id is the exact UID of the record.
- string id = 1;
-
- // active_since is the timestamp after which returned clusters should have been active.
- // This applies to both cluster registration and when it was "last seen".
- google.protobuf.Timestamp active_since = 2;
-
- // uidp filers records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 3;
-
- // remote_id is the remote ID of this cluster.
- string remote_id = 4;
-
- // name is the exact name of the cluster.
- string name = 5;
-}
-
-message ClusterProfilesRequest {}
-
-message ClusterProfilesResponse {
- repeated Profile profile = 1;
-
- message Profile {
- string name = 1;
- string description = 2;
-
- repeated string dependencies = 3;
- }
-}
-
-message ClusterConfigRequest {
- // profiles specifies the root profiles we want as part of this configuration.
- repeated string profiles = 1;
-
- // EnforcerOptions contains additional Enforcer configuration settings.
- optional EnforcerOptions enforcer_options = 2;
-
- message EnforcerOptions {
- // +optional
- optional bool webhook_fail_open = 1;
- // +optional
- optional bool enable_cip_cache = 2;
- // +optional
- optional NamespaceEnforcementMode namespace_enforcement_mode = 3;
- }
-
- enum NamespaceEnforcementMode {
- OptOut = 0;
- OptIn = 1;
- }
-}
-
-message ClusterConfigResponse {
- bytes mcp_config = 1;
- bytes tenant_config = 2;
-
- // profiles includes the full set of profiles returned (including transitive
- // dependencies of the input profiles)
- repeated string profiles = 3;
-}
-
-message ClusterCIDRRequest {
-}
-
-message ClusterCIDRResponse {
- // cidr_blocks specifies the cidr blocks enforce uses to communicate with clusters.
- repeated string cidr_blocks = 1;
-}
diff --git a/proto/platform/tenant/v1/cluster.platform_grpc.pb.go b/proto/platform/tenant/v1/cluster.platform_grpc.pb.go
deleted file mode 100644
index 75c55127..00000000
--- a/proto/platform/tenant/v1/cluster.platform_grpc.pb.go
+++ /dev/null
@@ -1,369 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: cluster.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Clusters_Create_FullMethodName = "/chainguard.platform.tenant.Clusters/Create"
- Clusters_Delete_FullMethodName = "/chainguard.platform.tenant.Clusters/Delete"
- Clusters_Discover_FullMethodName = "/chainguard.platform.tenant.Clusters/Discover"
- Clusters_List_FullMethodName = "/chainguard.platform.tenant.Clusters/List"
- Clusters_Update_FullMethodName = "/chainguard.platform.tenant.Clusters/Update"
- Clusters_Profiles_FullMethodName = "/chainguard.platform.tenant.Clusters/Profiles"
- Clusters_Config_FullMethodName = "/chainguard.platform.tenant.Clusters/Config"
- Clusters_CIDR_FullMethodName = "/chainguard.platform.tenant.Clusters/CIDR"
-)
-
-// ClustersClient is the client API for Clusters service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type ClustersClient interface {
- Create(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error)
- Delete(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
- Discover(ctx context.Context, in *ClusterDiscoveryRequest, opts ...grpc.CallOption) (*ClusterDiscoveryResponse, error)
- List(ctx context.Context, in *ClusterFilter, opts ...grpc.CallOption) (*ClusterList, error)
- Update(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error)
- Profiles(ctx context.Context, in *ClusterProfilesRequest, opts ...grpc.CallOption) (*ClusterProfilesResponse, error)
- Config(ctx context.Context, in *ClusterConfigRequest, opts ...grpc.CallOption) (*ClusterConfigResponse, error)
- CIDR(ctx context.Context, in *ClusterCIDRRequest, opts ...grpc.CallOption) (*ClusterCIDRResponse, error)
-}
-
-type clustersClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewClustersClient(cc grpc.ClientConnInterface) ClustersClient {
- return &clustersClient{cc}
-}
-
-func (c *clustersClient) Create(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error) {
- out := new(Cluster)
- err := c.cc.Invoke(ctx, Clusters_Create_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) Delete(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
- out := new(emptypb.Empty)
- err := c.cc.Invoke(ctx, Clusters_Delete_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) Discover(ctx context.Context, in *ClusterDiscoveryRequest, opts ...grpc.CallOption) (*ClusterDiscoveryResponse, error) {
- out := new(ClusterDiscoveryResponse)
- err := c.cc.Invoke(ctx, Clusters_Discover_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) List(ctx context.Context, in *ClusterFilter, opts ...grpc.CallOption) (*ClusterList, error) {
- out := new(ClusterList)
- err := c.cc.Invoke(ctx, Clusters_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) Update(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) {
- out := new(Cluster)
- err := c.cc.Invoke(ctx, Clusters_Update_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) Profiles(ctx context.Context, in *ClusterProfilesRequest, opts ...grpc.CallOption) (*ClusterProfilesResponse, error) {
- out := new(ClusterProfilesResponse)
- err := c.cc.Invoke(ctx, Clusters_Profiles_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) Config(ctx context.Context, in *ClusterConfigRequest, opts ...grpc.CallOption) (*ClusterConfigResponse, error) {
- out := new(ClusterConfigResponse)
- err := c.cc.Invoke(ctx, Clusters_Config_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *clustersClient) CIDR(ctx context.Context, in *ClusterCIDRRequest, opts ...grpc.CallOption) (*ClusterCIDRResponse, error) {
- out := new(ClusterCIDRResponse)
- err := c.cc.Invoke(ctx, Clusters_CIDR_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// ClustersServer is the server API for Clusters service.
-// All implementations must embed UnimplementedClustersServer
-// for forward compatibility
-type ClustersServer interface {
- Create(context.Context, *CreateClusterRequest) (*Cluster, error)
- Delete(context.Context, *DeleteClusterRequest) (*emptypb.Empty, error)
- Discover(context.Context, *ClusterDiscoveryRequest) (*ClusterDiscoveryResponse, error)
- List(context.Context, *ClusterFilter) (*ClusterList, error)
- Update(context.Context, *Cluster) (*Cluster, error)
- Profiles(context.Context, *ClusterProfilesRequest) (*ClusterProfilesResponse, error)
- Config(context.Context, *ClusterConfigRequest) (*ClusterConfigResponse, error)
- CIDR(context.Context, *ClusterCIDRRequest) (*ClusterCIDRResponse, error)
- mustEmbedUnimplementedClustersServer()
-}
-
-// UnimplementedClustersServer must be embedded to have forward compatible implementations.
-type UnimplementedClustersServer struct {
-}
-
-func (UnimplementedClustersServer) Create(context.Context, *CreateClusterRequest) (*Cluster, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
-}
-func (UnimplementedClustersServer) Delete(context.Context, *DeleteClusterRequest) (*emptypb.Empty, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
-}
-func (UnimplementedClustersServer) Discover(context.Context, *ClusterDiscoveryRequest) (*ClusterDiscoveryResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Discover not implemented")
-}
-func (UnimplementedClustersServer) List(context.Context, *ClusterFilter) (*ClusterList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedClustersServer) Update(context.Context, *Cluster) (*Cluster, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
-}
-func (UnimplementedClustersServer) Profiles(context.Context, *ClusterProfilesRequest) (*ClusterProfilesResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Profiles not implemented")
-}
-func (UnimplementedClustersServer) Config(context.Context, *ClusterConfigRequest) (*ClusterConfigResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Config not implemented")
-}
-func (UnimplementedClustersServer) CIDR(context.Context, *ClusterCIDRRequest) (*ClusterCIDRResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method CIDR not implemented")
-}
-func (UnimplementedClustersServer) mustEmbedUnimplementedClustersServer() {}
-
-// UnsafeClustersServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to ClustersServer will
-// result in compilation errors.
-type UnsafeClustersServer interface {
- mustEmbedUnimplementedClustersServer()
-}
-
-func RegisterClustersServer(s grpc.ServiceRegistrar, srv ClustersServer) {
- s.RegisterService(&Clusters_ServiceDesc, srv)
-}
-
-func _Clusters_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CreateClusterRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Create(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Create_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Create(ctx, req.(*CreateClusterRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(DeleteClusterRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Delete_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Delete(ctx, req.(*DeleteClusterRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_Discover_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ClusterDiscoveryRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Discover(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Discover_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Discover(ctx, req.(*ClusterDiscoveryRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ClusterFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).List(ctx, req.(*ClusterFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Cluster)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Update(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Update_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Update(ctx, req.(*Cluster))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_Profiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ClusterProfilesRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Profiles(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Profiles_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Profiles(ctx, req.(*ClusterProfilesRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ClusterConfigRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).Config(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_Config_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).Config(ctx, req.(*ClusterConfigRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Clusters_CIDR_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ClusterCIDRRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ClustersServer).CIDR(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Clusters_CIDR_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ClustersServer).CIDR(ctx, req.(*ClusterCIDRRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Clusters_ServiceDesc is the grpc.ServiceDesc for Clusters service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Clusters_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Clusters",
- HandlerType: (*ClustersServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Create",
- Handler: _Clusters_Create_Handler,
- },
- {
- MethodName: "Delete",
- Handler: _Clusters_Delete_Handler,
- },
- {
- MethodName: "Discover",
- Handler: _Clusters_Discover_Handler,
- },
- {
- MethodName: "List",
- Handler: _Clusters_List_Handler,
- },
- {
- MethodName: "Update",
- Handler: _Clusters_Update_Handler,
- },
- {
- MethodName: "Profiles",
- Handler: _Clusters_Profiles_Handler,
- },
- {
- MethodName: "Config",
- Handler: _Clusters_Config_Handler,
- },
- {
- MethodName: "CIDR",
- Handler: _Clusters_CIDR_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "cluster.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
index b8468745..4189082a 100644
--- a/proto/platform/tenant/v1/doc.go
+++ b/proto/platform/tenant/v1/doc.go
@@ -6,12 +6,10 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Tenant interactions for the Console.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. cluster.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative context.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative policy_results.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. record.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. risk.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. vuln.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. attestation.platform.proto
diff --git a/proto/platform/tenant/v1/risk.platform.pb.go b/proto/platform/tenant/v1/risk.platform.pb.go
deleted file mode 100644
index 36988adb..00000000
--- a/proto/platform/tenant/v1/risk.platform.pb.go
+++ /dev/null
@@ -1,947 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: risk.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type Risk_MissingData_Type int32
-
-const (
- Risk_MissingData_UNKNOWN Risk_MissingData_Type = 0
- Risk_MissingData_SIGNATURE Risk_MissingData_Type = 1
- Risk_MissingData_SBOM Risk_MissingData_Type = 2
- Risk_MissingData_POLICY Risk_MissingData_Type = 3
-)
-
-// Enum value maps for Risk_MissingData_Type.
-var (
- Risk_MissingData_Type_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "SIGNATURE",
- 2: "SBOM",
- 3: "POLICY",
- }
- Risk_MissingData_Type_value = map[string]int32{
- "UNKNOWN": 0,
- "SIGNATURE": 1,
- "SBOM": 2,
- "POLICY": 3,
- }
-)
-
-func (x Risk_MissingData_Type) Enum() *Risk_MissingData_Type {
- p := new(Risk_MissingData_Type)
- *p = x
- return p
-}
-
-func (x Risk_MissingData_Type) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Risk_MissingData_Type) Descriptor() protoreflect.EnumDescriptor {
- return file_risk_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (Risk_MissingData_Type) Type() protoreflect.EnumType {
- return &file_risk_platform_proto_enumTypes[0]
-}
-
-func (x Risk_MissingData_Type) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Risk_MissingData_Type.Descriptor instead.
-func (Risk_MissingData_Type) EnumDescriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2, 1, 0}
-}
-
-type Risk_Vulnerability_Severity int32
-
-const (
- Risk_Vulnerability_UNKNOWN Risk_Vulnerability_Severity = 0
- Risk_Vulnerability_LOW Risk_Vulnerability_Severity = 1
- Risk_Vulnerability_MEDIUM Risk_Vulnerability_Severity = 2
- Risk_Vulnerability_HIGH Risk_Vulnerability_Severity = 3
- Risk_Vulnerability_CRITICAL Risk_Vulnerability_Severity = 4
-)
-
-// Enum value maps for Risk_Vulnerability_Severity.
-var (
- Risk_Vulnerability_Severity_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "LOW",
- 2: "MEDIUM",
- 3: "HIGH",
- 4: "CRITICAL",
- }
- Risk_Vulnerability_Severity_value = map[string]int32{
- "UNKNOWN": 0,
- "LOW": 1,
- "MEDIUM": 2,
- "HIGH": 3,
- "CRITICAL": 4,
- }
-)
-
-func (x Risk_Vulnerability_Severity) Enum() *Risk_Vulnerability_Severity {
- p := new(Risk_Vulnerability_Severity)
- *p = x
- return p
-}
-
-func (x Risk_Vulnerability_Severity) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Risk_Vulnerability_Severity) Descriptor() protoreflect.EnumDescriptor {
- return file_risk_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (Risk_Vulnerability_Severity) Type() protoreflect.EnumType {
- return &file_risk_platform_proto_enumTypes[1]
-}
-
-func (x Risk_Vulnerability_Severity) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Risk_Vulnerability_Severity.Descriptor instead.
-func (Risk_Vulnerability_Severity) EnumDescriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2, 2, 0}
-}
-
-type RiskFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- Uidp *v1.UIDPFilter `protobuf:"bytes,2,opt,name=uidp,proto3" json:"uidp,omitempty"`
-}
-
-func (x *RiskFilter) Reset() {
- *x = RiskFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RiskFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RiskFilter) ProtoMessage() {}
-
-func (x *RiskFilter) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RiskFilter.ProtoReflect.Descriptor instead.
-func (*RiskFilter) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RiskFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RiskFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-type RiskList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Risk `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RiskList) Reset() {
- *x = RiskList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RiskList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RiskList) ProtoMessage() {}
-
-func (x *RiskList) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RiskList.ProtoReflect.Descriptor instead.
-func (*RiskList) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RiskList) GetItems() []*Risk {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type Risk struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Risk ID (UIDP resource + unique ID)
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // Grouping identifier to associate Risks in the same UIDP
- // to each other.
- GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
- // List of UIDPs that were used to determine this Risk.
- Inputs []string `protobuf:"bytes,3,rep,name=inputs,proto3" json:"inputs,omitempty"`
- // What kind of risk is this? Lack of signatures, vulnerability, SBOM quality, etc.
- Details *Risk_Details `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"`
- // Output only. Free form text describing this Risk.
- Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
- // Output only. Chainguard EDU link for more details on this Risk.
- DocumentationUrl string `protobuf:"bytes,6,opt,name=documentation_url,json=documentationUrl,proto3" json:"documentation_url,omitempty"`
- // Optional. Chainguard's recommendation(s) for how to resolve this Risk.
- Recommendations []*Recommendation `protobuf:"bytes,7,rep,name=recommendations,proto3" json:"recommendations,omitempty"`
- // Output only. When Enforce last saw this Risk.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
-}
-
-func (x *Risk) Reset() {
- *x = Risk{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Risk) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Risk) ProtoMessage() {}
-
-func (x *Risk) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Risk.ProtoReflect.Descriptor instead.
-func (*Risk) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Risk) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Risk) GetGroupId() string {
- if x != nil {
- return x.GroupId
- }
- return ""
-}
-
-func (x *Risk) GetInputs() []string {
- if x != nil {
- return x.Inputs
- }
- return nil
-}
-
-func (x *Risk) GetDetails() *Risk_Details {
- if x != nil {
- return x.Details
- }
- return nil
-}
-
-func (x *Risk) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Risk) GetDocumentationUrl() string {
- if x != nil {
- return x.DocumentationUrl
- }
- return ""
-}
-
-func (x *Risk) GetRecommendations() []*Recommendation {
- if x != nil {
- return x.Recommendations
- }
- return nil
-}
-
-func (x *Risk) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-type Recommendation struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Classification of what kind of remediation this is, e.g.:
- // upgrade, replace, etc.
- //
- // Types that are assignable to Action:
- //
- // *Recommendation_Replace
- Action isRecommendation_Action `protobuf_oneof:"action"`
- // Output only. Free form text describing how this can be resolved.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // Output only. Chainguard EDU link for more details on this Recommendation.
- DocumentationUrl string `protobuf:"bytes,4,opt,name=documentation_url,json=documentationUrl,proto3" json:"documentation_url,omitempty"`
-}
-
-func (x *Recommendation) Reset() {
- *x = Recommendation{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Recommendation) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Recommendation) ProtoMessage() {}
-
-func (x *Recommendation) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Recommendation.ProtoReflect.Descriptor instead.
-func (*Recommendation) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (m *Recommendation) GetAction() isRecommendation_Action {
- if m != nil {
- return m.Action
- }
- return nil
-}
-
-func (x *Recommendation) GetReplace() *Recommendation_ReplaceArtifact {
- if x, ok := x.GetAction().(*Recommendation_Replace); ok {
- return x.Replace
- }
- return nil
-}
-
-func (x *Recommendation) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *Recommendation) GetDocumentationUrl() string {
- if x != nil {
- return x.DocumentationUrl
- }
- return ""
-}
-
-type isRecommendation_Action interface {
- isRecommendation_Action()
-}
-
-type Recommendation_Replace struct {
- Replace *Recommendation_ReplaceArtifact `protobuf:"bytes,1,opt,name=replace,proto3,oneof"`
-}
-
-func (*Recommendation_Replace) isRecommendation_Action() {}
-
-type Risk_Details struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // Types that are assignable to Data:
- //
- // *Risk_Details_MissingData
- Data isRisk_Details_Data `protobuf_oneof:"data"`
-}
-
-func (x *Risk_Details) Reset() {
- *x = Risk_Details{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Risk_Details) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Risk_Details) ProtoMessage() {}
-
-func (x *Risk_Details) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Risk_Details.ProtoReflect.Descriptor instead.
-func (*Risk_Details) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (m *Risk_Details) GetData() isRisk_Details_Data {
- if m != nil {
- return m.Data
- }
- return nil
-}
-
-func (x *Risk_Details) GetMissingData() *Risk_MissingData {
- if x, ok := x.GetData().(*Risk_Details_MissingData); ok {
- return x.MissingData
- }
- return nil
-}
-
-type isRisk_Details_Data interface {
- isRisk_Details_Data()
-}
-
-type Risk_Details_MissingData struct {
- MissingData *Risk_MissingData `protobuf:"bytes,1,opt,name=missing_data,json=missingData,proto3,oneof"`
-}
-
-func (*Risk_Details_MissingData) isRisk_Details_Data() {}
-
-type Risk_MissingData struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // What kind of data is missing (e.g. signature, sbom, policy, etc.)
- Type Risk_MissingData_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chainguard.platform.tenant.Risk_MissingData_Type" json:"type,omitempty"`
-}
-
-func (x *Risk_MissingData) Reset() {
- *x = Risk_MissingData{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Risk_MissingData) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Risk_MissingData) ProtoMessage() {}
-
-func (x *Risk_MissingData) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Risk_MissingData.ProtoReflect.Descriptor instead.
-func (*Risk_MissingData) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2, 1}
-}
-
-func (x *Risk_MissingData) GetType() Risk_MissingData_Type {
- if x != nil {
- return x.Type
- }
- return Risk_MissingData_UNKNOWN
-}
-
-type Risk_Vulnerability struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Severity Risk_Vulnerability_Severity `protobuf:"varint,5,opt,name=severity,proto3,enum=chainguard.platform.tenant.Risk_Vulnerability_Severity" json:"severity,omitempty"`
- // External identifier of the source of the vuln - e.g. CVE ID.
- Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"`
-}
-
-func (x *Risk_Vulnerability) Reset() {
- *x = Risk_Vulnerability{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Risk_Vulnerability) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Risk_Vulnerability) ProtoMessage() {}
-
-func (x *Risk_Vulnerability) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Risk_Vulnerability.ProtoReflect.Descriptor instead.
-func (*Risk_Vulnerability) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{2, 2}
-}
-
-func (x *Risk_Vulnerability) GetSeverity() Risk_Vulnerability_Severity {
- if x != nil {
- return x.Severity
- }
- return Risk_Vulnerability_UNKNOWN
-}
-
-func (x *Risk_Vulnerability) GetSource() string {
- if x != nil {
- return x.Source
- }
- return ""
-}
-
-type Recommendation_ReplaceArtifact struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
- // Target artifact that may be able to resolve this Risk.
- To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
-}
-
-func (x *Recommendation_ReplaceArtifact) Reset() {
- *x = Recommendation_ReplaceArtifact{}
- if protoimpl.UnsafeEnabled {
- mi := &file_risk_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Recommendation_ReplaceArtifact) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Recommendation_ReplaceArtifact) ProtoMessage() {}
-
-func (x *Recommendation_ReplaceArtifact) ProtoReflect() protoreflect.Message {
- mi := &file_risk_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Recommendation_ReplaceArtifact.ProtoReflect.Descriptor instead.
-func (*Recommendation_ReplaceArtifact) Descriptor() ([]byte, []int) {
- return file_risk_platform_proto_rawDescGZIP(), []int{3, 0}
-}
-
-func (x *Recommendation_ReplaceArtifact) GetFrom() string {
- if x != nil {
- return x.From
- }
- return ""
-}
-
-func (x *Recommendation_ReplaceArtifact) GetTo() string {
- if x != nil {
- return x.To
- }
- return ""
-}
-
-var File_risk_platform_proto protoreflect.FileDescriptor
-
-var file_risk_platform_proto_rawDesc = []byte{
- 0x0a, 0x13, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
- 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75,
- 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64,
- 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x22, 0x58, 0x0a, 0x0a, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x42, 0x0a, 0x08, 0x52, 0x69,
- 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa7,
- 0x06, 0x0a, 0x04, 0x52, 0x69, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x64, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e, 0x44, 0x65,
- 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x63,
- 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x54, 0x0a,
- 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x1a, 0x64, 0x0a, 0x07,
- 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x69,
- 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e,
- 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61,
- 0x74, 0x61, 0x1a, 0x8e, 0x01, 0x0a, 0x0b, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61,
- 0x74, 0x61, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69,
- 0x73, 0x6b, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54,
- 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x38, 0x0a, 0x04, 0x54, 0x79, 0x70,
- 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d,
- 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a,
- 0x04, 0x53, 0x42, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43,
- 0x59, 0x10, 0x03, 0x1a, 0xc2, 0x01, 0x0a, 0x0d, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x53, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74,
- 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79,
- 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x22, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c,
- 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02,
- 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52,
- 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x63,
- 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
- 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
- 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c,
- 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
- 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55,
- 0x72, 0x6c, 0x1a, 0x35, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x72, 0x74,
- 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x32, 0x85, 0x01, 0x0a, 0x05, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x7c, 0x0a,
- 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x24, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x80, 0x05, 0x10, 0x01, 0x42, 0x69, 0x0a, 0x25, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64,
- 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x69,
- 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_risk_platform_proto_rawDescOnce sync.Once
- file_risk_platform_proto_rawDescData = file_risk_platform_proto_rawDesc
-)
-
-func file_risk_platform_proto_rawDescGZIP() []byte {
- file_risk_platform_proto_rawDescOnce.Do(func() {
- file_risk_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_risk_platform_proto_rawDescData)
- })
- return file_risk_platform_proto_rawDescData
-}
-
-var file_risk_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_risk_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_risk_platform_proto_goTypes = []interface{}{
- (Risk_MissingData_Type)(0), // 0: chainguard.platform.tenant.Risk.MissingData.Type
- (Risk_Vulnerability_Severity)(0), // 1: chainguard.platform.tenant.Risk.Vulnerability.Severity
- (*RiskFilter)(nil), // 2: chainguard.platform.tenant.RiskFilter
- (*RiskList)(nil), // 3: chainguard.platform.tenant.RiskList
- (*Risk)(nil), // 4: chainguard.platform.tenant.Risk
- (*Recommendation)(nil), // 5: chainguard.platform.tenant.Recommendation
- (*Risk_Details)(nil), // 6: chainguard.platform.tenant.Risk.Details
- (*Risk_MissingData)(nil), // 7: chainguard.platform.tenant.Risk.MissingData
- (*Risk_Vulnerability)(nil), // 8: chainguard.platform.tenant.Risk.Vulnerability
- (*Recommendation_ReplaceArtifact)(nil), // 9: chainguard.platform.tenant.Recommendation.ReplaceArtifact
- (*v1.UIDPFilter)(nil), // 10: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 11: google.protobuf.Timestamp
-}
-var file_risk_platform_proto_depIdxs = []int32{
- 10, // 0: chainguard.platform.tenant.RiskFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 4, // 1: chainguard.platform.tenant.RiskList.items:type_name -> chainguard.platform.tenant.Risk
- 6, // 2: chainguard.platform.tenant.Risk.details:type_name -> chainguard.platform.tenant.Risk.Details
- 5, // 3: chainguard.platform.tenant.Risk.recommendations:type_name -> chainguard.platform.tenant.Recommendation
- 11, // 4: chainguard.platform.tenant.Risk.last_seen:type_name -> google.protobuf.Timestamp
- 9, // 5: chainguard.platform.tenant.Recommendation.replace:type_name -> chainguard.platform.tenant.Recommendation.ReplaceArtifact
- 7, // 6: chainguard.platform.tenant.Risk.Details.missing_data:type_name -> chainguard.platform.tenant.Risk.MissingData
- 0, // 7: chainguard.platform.tenant.Risk.MissingData.type:type_name -> chainguard.platform.tenant.Risk.MissingData.Type
- 1, // 8: chainguard.platform.tenant.Risk.Vulnerability.severity:type_name -> chainguard.platform.tenant.Risk.Vulnerability.Severity
- 2, // 9: chainguard.platform.tenant.Risks.List:input_type -> chainguard.platform.tenant.RiskFilter
- 3, // 10: chainguard.platform.tenant.Risks.List:output_type -> chainguard.platform.tenant.RiskList
- 10, // [10:11] is the sub-list for method output_type
- 9, // [9:10] 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_risk_platform_proto_init() }
-func file_risk_platform_proto_init() {
- if File_risk_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_risk_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RiskFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RiskList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Risk); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Recommendation); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Risk_Details); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Risk_MissingData); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Risk_Vulnerability); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_risk_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Recommendation_ReplaceArtifact); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_risk_platform_proto_msgTypes[3].OneofWrappers = []interface{}{
- (*Recommendation_Replace)(nil),
- }
- file_risk_platform_proto_msgTypes[4].OneofWrappers = []interface{}{
- (*Risk_Details_MissingData)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_risk_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 8,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_risk_platform_proto_goTypes,
- DependencyIndexes: file_risk_platform_proto_depIdxs,
- EnumInfos: file_risk_platform_proto_enumTypes,
- MessageInfos: file_risk_platform_proto_msgTypes,
- }.Build()
- File_risk_platform_proto = out.File
- file_risk_platform_proto_rawDesc = nil
- file_risk_platform_proto_goTypes = nil
- file_risk_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/risk.platform.pb.gw.go b/proto/platform/tenant/v1/risk.platform.pb.gw.go
deleted file mode 100644
index 209d9c3b..00000000
--- a/proto/platform/tenant/v1/risk.platform.pb.gw.go
+++ /dev/null
@@ -1,166 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: risk.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_Risks_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_Risks_List_0(ctx context.Context, marshaler runtime.Marshaler, client RisksClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RiskFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Risks_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Risks_List_0(ctx context.Context, marshaler runtime.Marshaler, server RisksServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RiskFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Risks_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterRisksHandlerServer registers the http handlers for service Risks to "mux".
-// UnaryRPC :call RisksServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRisksHandlerFromEndpoint instead.
-func RegisterRisksHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RisksServer) error {
-
- mux.Handle("GET", pattern_Risks_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Risks/List", runtime.WithHTTPPathPattern("/tenant/v1/risks"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Risks_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Risks_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterRisksHandlerFromEndpoint is same as RegisterRisksHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterRisksHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterRisksHandler(ctx, mux, conn)
-}
-
-// RegisterRisksHandler registers the http handlers for service Risks to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterRisksHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterRisksHandlerClient(ctx, mux, NewRisksClient(conn))
-}
-
-// RegisterRisksHandlerClient registers the http handlers for service Risks
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RisksClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RisksClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "RisksClient" to call the correct interceptors.
-func RegisterRisksHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RisksClient) error {
-
- mux.Handle("GET", pattern_Risks_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Risks/List", runtime.WithHTTPPathPattern("/tenant/v1/risks"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Risks_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Risks_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Risks_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "risks"}, ""))
-)
-
-var (
- forward_Risks_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/risk.platform.proto b/proto/platform/tenant/v1/risk.platform.proto
deleted file mode 100644
index 73bf6c94..00000000
--- a/proto/platform/tenant/v1/risk.platform.proto
+++ /dev/null
@@ -1,116 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformRiskProto";
-
-package chainguard.platform.tenant;
-
-import "google/api/annotations.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Risks {
- rpc List(RiskFilter) returns (RiskList) {
- option (google.api.http) = {
- get: "/tenant/v1/risks"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_RISKS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message RiskFilter{
- // id is the exact UID of the record.
- string id = 1;
-
- chainguard.platform.common.UIDPFilter uidp = 2;
-}
-
-message RiskList{
- repeated Risk items = 1;
-}
-
-message Risk {
- // Risk ID (UIDP resource + unique ID)
- string id = 1;
-
- // Grouping identifier to associate Risks in the same UIDP
- // to each other.
- string group_id = 2;
-
- // List of UIDPs that were used to determine this Risk.
- repeated string inputs = 3;
-
- // What kind of risk is this? Lack of signatures, vulnerability, SBOM quality, etc.
- Details details = 4;
-
- message Details {
- oneof data {
- MissingData missing_data = 1;
- }
- }
-
- message MissingData {
- // What kind of data is missing (e.g. signature, sbom, policy, etc.)
- Type type = 1;
-
- enum Type {
- UNKNOWN = 0;
- SIGNATURE = 1;
- SBOM = 2;
- POLICY = 3;
- }
- }
-
- message Vulnerability {
- Severity severity = 5;
-
- enum Severity {
- UNKNOWN = 0;
- LOW = 1;
- MEDIUM = 2;
- HIGH = 3;
- CRITICAL = 4;
- }
-
- // External identifier of the source of the vuln - e.g. CVE ID.
- string source = 7;
- }
-
- // Output only. Free form text describing this Risk.
- string description = 5;
- // Output only. Chainguard EDU link for more details on this Risk.
- string documentation_url = 6;
-
- // Optional. Chainguard's recommendation(s) for how to resolve this Risk.
- repeated Recommendation recommendations = 7;
-
- // Output only. When Enforce last saw this Risk.
- google.protobuf.Timestamp last_seen = 8;
-}
-
-message Recommendation {
- // Classification of what kind of remediation this is, e.g.:
- // upgrade, replace, etc.
- oneof action {
- ReplaceArtifact replace = 1;
- }
-
- message ReplaceArtifact {
- string from = 1;
- // Target artifact that may be able to resolve this Risk.
- string to = 2;
- }
-
- // Output only. Free form text describing how this can be resolved.
- string description = 3;
- // Output only. Chainguard EDU link for more details on this Recommendation.
- string documentation_url = 4;
-}
diff --git a/proto/platform/tenant/v1/risk.platform_grpc.pb.go b/proto/platform/tenant/v1/risk.platform_grpc.pb.go
deleted file mode 100644
index 91a9739e..00000000
--- a/proto/platform/tenant/v1/risk.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: risk.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Risks_List_FullMethodName = "/chainguard.platform.tenant.Risks/List"
-)
-
-// RisksClient is the client API for Risks service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RisksClient interface {
- List(ctx context.Context, in *RiskFilter, opts ...grpc.CallOption) (*RiskList, error)
-}
-
-type risksClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRisksClient(cc grpc.ClientConnInterface) RisksClient {
- return &risksClient{cc}
-}
-
-func (c *risksClient) List(ctx context.Context, in *RiskFilter, opts ...grpc.CallOption) (*RiskList, error) {
- out := new(RiskList)
- err := c.cc.Invoke(ctx, Risks_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RisksServer is the server API for Risks service.
-// All implementations must embed UnimplementedRisksServer
-// for forward compatibility
-type RisksServer interface {
- List(context.Context, *RiskFilter) (*RiskList, error)
- mustEmbedUnimplementedRisksServer()
-}
-
-// UnimplementedRisksServer must be embedded to have forward compatible implementations.
-type UnimplementedRisksServer struct {
-}
-
-func (UnimplementedRisksServer) List(context.Context, *RiskFilter) (*RiskList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedRisksServer) mustEmbedUnimplementedRisksServer() {}
-
-// UnsafeRisksServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RisksServer will
-// result in compilation errors.
-type UnsafeRisksServer interface {
- mustEmbedUnimplementedRisksServer()
-}
-
-func RegisterRisksServer(s grpc.ServiceRegistrar, srv RisksServer) {
- s.RegisterService(&Risks_ServiceDesc, srv)
-}
-
-func _Risks_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RiskFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RisksServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Risks_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RisksServer).List(ctx, req.(*RiskFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Risks_ServiceDesc is the grpc.ServiceDesc for Risks service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Risks_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Risks",
- HandlerType: (*RisksServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Risks_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "risk.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
index 4161f4c0..5d4fdc68 100644
--- a/proto/platform/tenant/v1/test/mock_client.go
+++ b/proto/platform/tenant/v1/test/mock_client.go
@@ -12,23 +12,17 @@ import (
type MockTenantClient struct {
OnClose error
- ClustersClient MockClustersClient
RecordsClient MockRecordsClient
RecordContextsClient MockRecordContextsClient
SbomsClient MockSbomsClient
SignaturesClient MockSignaturesClient
PolicyResultsClient MockPolicyResultsClient
- RisksClient MockRisksClient
VulnReportsClient MockVulnReportsClient
AttestationClient MockAttestationsClientt
}
var _ tenant.Clients = (*MockTenantClient)(nil)
-func (m MockTenantClient) Clusters() tenant.ClustersClient {
- return &m.ClustersClient
-}
-
func (m MockTenantClient) Records() tenant.RecordsClient {
return &m.RecordsClient
}
@@ -41,10 +35,6 @@ func (m MockTenantClient) Sboms() tenant.SbomsClient {
return &m.SbomsClient
}
-func (m MockTenantClient) Risks() tenant.RisksClient {
- return &m.RisksClient
-}
-
func (m MockTenantClient) Signatures() tenant.SignaturesClient {
return &m.SignaturesClient
}
diff --git a/proto/platform/tenant/v1/test/mock_cluster.go b/proto/platform/tenant/v1/test/mock_cluster.go
deleted file mode 100644
index d23a82cd..00000000
--- a/proto/platform/tenant/v1/test/mock_cluster.go
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
- "google.golang.org/protobuf/types/known/emptypb"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.ClustersClient = (*MockClustersClient)(nil)
-
-type MockClustersClient struct {
- OnCreate []ClustersOnCreate
- OnDelete []ClustersOnDelete
- OnList []ClustersOnList
- OnUpdate []ClustersOnUpdate
- OnConfig []ClustersOnConfig
- OnProfiles []ClustersOnProfiles
- OnDiscover []ClustersOnDiscover
- OnCIDR []ClustersOnCIDR
-}
-
-type ClustersOnCreate struct {
- Given *tenant.CreateClusterRequest
- Created *tenant.Cluster
- Error error
-}
-
-type ClustersOnDelete struct {
- Given *tenant.CreateClusterRequest
- Error error
-}
-
-type ClustersOnList struct {
- Given *tenant.ClusterFilter
- List *tenant.ClusterList
- Error error
-}
-
-type ClustersOnUpdate struct {
- Given *tenant.Cluster
- Updated *tenant.Cluster
- Error error
-}
-
-type ClustersOnConfig struct {
- Given *tenant.ClusterConfigRequest
- Config *tenant.ClusterConfigResponse
- Error error
-}
-
-type ClustersOnProfiles struct {
- Given *tenant.ClusterProfilesRequest
- Config *tenant.ClusterProfilesResponse
- Error error
-}
-
-type ClustersOnDiscover struct {
- Given *tenant.ClusterDiscoveryRequest
- Config *tenant.ClusterDiscoveryResponse
- Error error
-}
-
-type ClustersOnCIDR struct {
- Given *tenant.ClusterCIDRRequest
- Config *tenant.ClusterCIDRResponse
- Error error
-}
-
-func (m MockClustersClient) Create(_ context.Context, given *tenant.CreateClusterRequest, _ ...grpc.CallOption) (*tenant.Cluster, error) {
- for _, o := range m.OnCreate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Created, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) Delete(_ context.Context, given *tenant.DeleteClusterRequest, _ ...grpc.CallOption) (*emptypb.Empty, error) {
- for _, o := range m.OnDelete {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return &emptypb.Empty{}, o.Error
- }
- }
- return &emptypb.Empty{}, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) List(_ context.Context, given *tenant.ClusterFilter, _ ...grpc.CallOption) (*tenant.ClusterList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) Update(_ context.Context, given *tenant.Cluster, _ ...grpc.CallOption) (*tenant.Cluster, error) {
- for _, o := range m.OnUpdate {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Updated, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) Config(_ context.Context, given *tenant.ClusterConfigRequest, _ ...grpc.CallOption) (*tenant.ClusterConfigResponse, error) {
- for _, o := range m.OnConfig {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Config, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) Profiles(_ context.Context, given *tenant.ClusterProfilesRequest, _ ...grpc.CallOption) (*tenant.ClusterProfilesResponse, error) {
- for _, o := range m.OnProfiles {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Config, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) Discover(_ context.Context, given *tenant.ClusterDiscoveryRequest, _ ...grpc.CallOption) (*tenant.ClusterDiscoveryResponse, error) {
- for _, o := range m.OnDiscover {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Config, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
-
-func (m MockClustersClient) CIDR(_ context.Context, given *tenant.ClusterCIDRRequest, _ ...grpc.CallOption) (*tenant.ClusterCIDRResponse, error) {
- for _, o := range m.OnCIDR {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.Config, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_risks.go b/proto/platform/tenant/v1/test/mock_risks.go
deleted file mode 100644
index 2cbb4a93..00000000
--- a/proto/platform/tenant/v1/test/mock_risks.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.RisksClient = (*MockRisksClient)(nil)
-
-type MockRisksClient struct {
- OnList []RisksOnList
-}
-
-type RisksOnList struct {
- Given *tenant.RiskFilter
- List *tenant.RiskList
- Error error
-}
-
-func (m MockRisksClient) List(_ context.Context, given *tenant.RiskFilter, _ ...grpc.CallOption) (*tenant.RiskList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/validation/enforcer_options.go b/validation/enforcer_options.go
deleted file mode 100644
index 2b56bb9c..00000000
--- a/validation/enforcer_options.go
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-Copyright 2023 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package validation
-
-import (
- "k8s.io/apimachinery/pkg/util/sets"
-)
-
-const (
- EnforcerOptionWebhookFailOpen = "webhook_fail_open"
- EnforcerOptionEnableCIPCache = "enable_cip_cache"
- EnforcerOptionNamespaceEnforcementMode = "namespace_enforcement_mode"
-
- NamespaceEnforcementModeOptOut = "opt-out"
- NamespaceEnforcementModeOptIn = "opt-in"
-)
-
-var (
- // ValidNamespaceEnforcementModeOpts are valid webhook label selection options for a managed cluster
- ValidNamespaceEnforcementModeOpts = sets.NewString(NamespaceEnforcementModeOptIn, NamespaceEnforcementModeOptOut)
-
- // ValidEnforcerOptions are valid field names of enforcer options available
- ValidEnforcerOptions = sets.NewString(EnforcerOptionWebhookFailOpen, EnforcerOptionEnableCIPCache, EnforcerOptionNamespaceEnforcementMode)
-)
From 5d20b35df77934f590c81fda3cd41fc4dd2392f6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 19 Apr 2024 11:44:35 -0700
Subject: [PATCH 26/41] Export b0ca3e18963dcf694d0ca85c60b659ec39ba406a
Export: b0ca3e18963dcf694d0ca85c60b659ec39ba406a
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 6266f39e..f7736189 100644
--- a/go.mod
+++ b/go.mod
@@ -61,7 +61,7 @@ require (
go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
- golang.org/x/net v0.22.0 // indirect
+ golang.org/x/net v0.23.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
diff --git a/go.sum b/go.sum
index 6559474e..e0169a6c 100644
--- a/go.sum
+++ b/go.sum
@@ -192,8 +192,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
-golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
+golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
From 3716fa00efffbb9c178a45a2f463461d13045b92 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Mon, 22 Apr 2024 09:04:24 -0700
Subject: [PATCH 27/41] Export 895b47ffde6cecc39109e90b249308aa07a70e9a
Export: 895b47ffde6cecc39109e90b249308aa07a70e9a
---
proto/platform/tenant/v1/clients.go | 38 +-
.../platform/tenant/v1/context.platform.pb.go | 876 ------------------
.../platform/tenant/v1/context.platform.proto | 119 ---
.../tenant/v1/context.platform_grpc.pb.go | 109 ---
proto/platform/tenant/v1/doc.go | 2 -
.../tenant/v1/policy_results.platform.pb.go | 770 ---------------
.../v1/policy_results.platform.pb.gw.go | 171 ----
.../tenant/v1/policy_results.platform.proto | 113 ---
.../v1/policy_results.platform_grpc.pb.go | 109 ---
proto/platform/tenant/v1/test/mock_client.go | 20 +-
.../platform/tenant/v1/test/mock_contexts.go | 38 -
.../tenant/v1/test/mock_policy_results.go | 38 -
12 files changed, 16 insertions(+), 2387 deletions(-)
delete mode 100644 proto/platform/tenant/v1/context.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/context.platform.proto
delete mode 100644 proto/platform/tenant/v1/context.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/policy_results.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/policy_results.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/policy_results.platform.proto
delete mode 100644 proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/test/mock_contexts.go
delete mode 100644 proto/platform/tenant/v1/test/mock_policy_results.go
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
index 83d2e3be..fbf13ea7 100644
--- a/proto/platform/tenant/v1/clients.go
+++ b/proto/platform/tenant/v1/clients.go
@@ -20,10 +20,8 @@ import (
type Clients interface {
Records() RecordsClient
- RecordContexts() RecordContextsClient
Sboms() SbomsClient
Signatures() SignaturesClient
- PolicyResults() PolicyResultsClient
VulnReports() VulnReportsClient
Close() error
@@ -55,12 +53,10 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
return &clients{
- records: NewRecordsClient(conn),
- recordContexts: NewRecordContextsClient(conn),
- sboms: NewSbomsClient(conn),
- vulnReports: NewVulnReportsClient(conn),
- signatures: NewSignaturesClient(conn),
- policyResults: NewPolicyResultsClient(conn),
+ records: NewRecordsClient(conn),
+ sboms: NewSbomsClient(conn),
+ vulnReports: NewVulnReportsClient(conn),
+ signatures: NewSignaturesClient(conn),
conn: conn,
}, nil
@@ -68,12 +64,10 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
return &clients{
- records: NewRecordsClient(conn),
- recordContexts: NewRecordContextsClient(conn),
- sboms: NewSbomsClient(conn),
- vulnReports: NewVulnReportsClient(conn),
- signatures: NewSignaturesClient(conn),
- policyResults: NewPolicyResultsClient(conn),
+ records: NewRecordsClient(conn),
+ sboms: NewSbomsClient(conn),
+ vulnReports: NewVulnReportsClient(conn),
+ signatures: NewSignaturesClient(conn),
// conn is not set, this client struct does not own closing it.
}
}
@@ -81,11 +75,9 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
type clients struct {
records RecordsClient
- recordContexts RecordContextsClient
- sboms SbomsClient
- signatures SignaturesClient
- policyResults PolicyResultsClient
- vulnReports VulnReportsClient
+ sboms SbomsClient
+ signatures SignaturesClient
+ vulnReports VulnReportsClient
conn *grpc.ClientConn
}
@@ -94,10 +86,6 @@ func (c *clients) Records() RecordsClient {
return c.records
}
-func (c *clients) RecordContexts() RecordContextsClient {
- return c.recordContexts
-}
-
func (c *clients) Sboms() SbomsClient {
return c.sboms
}
@@ -106,10 +94,6 @@ func (c *clients) Signatures() SignaturesClient {
return c.signatures
}
-func (c *clients) PolicyResults() PolicyResultsClient {
- return c.policyResults
-}
-
func (c *clients) VulnReports() VulnReportsClient {
return c.vulnReports
}
diff --git a/proto/platform/tenant/v1/context.platform.pb.go b/proto/platform/tenant/v1/context.platform.pb.go
deleted file mode 100644
index 1c67141d..00000000
--- a/proto/platform/tenant/v1/context.platform.pb.go
+++ /dev/null
@@ -1,876 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: context.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type RecordContext_Ancestry_Role int32
-
-const (
- RecordContext_Ancestry_UNKNOWN RecordContext_Ancestry_Role = 0
- RecordContext_Ancestry_BASE RecordContext_Ancestry_Role = 1
- RecordContext_Ancestry_DERIVED RecordContext_Ancestry_Role = 2
-)
-
-// Enum value maps for RecordContext_Ancestry_Role.
-var (
- RecordContext_Ancestry_Role_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "BASE",
- 2: "DERIVED",
- }
- RecordContext_Ancestry_Role_value = map[string]int32{
- "UNKNOWN": 0,
- "BASE": 1,
- "DERIVED": 2,
- }
-)
-
-func (x RecordContext_Ancestry_Role) Enum() *RecordContext_Ancestry_Role {
- p := new(RecordContext_Ancestry_Role)
- *p = x
- return p
-}
-
-func (x RecordContext_Ancestry_Role) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RecordContext_Ancestry_Role) Descriptor() protoreflect.EnumDescriptor {
- return file_context_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (RecordContext_Ancestry_Role) Type() protoreflect.EnumType {
- return &file_context_platform_proto_enumTypes[0]
-}
-
-func (x RecordContext_Ancestry_Role) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RecordContext_Ancestry_Role.Descriptor instead.
-func (RecordContext_Ancestry_Role) EnumDescriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0, 1, 0}
-}
-
-type RecordContext_Variant_Role int32
-
-const (
- RecordContext_Variant_UNKNOWN RecordContext_Variant_Role = 0
- RecordContext_Variant_INDEX RecordContext_Variant_Role = 1
- RecordContext_Variant_VARIANT RecordContext_Variant_Role = 2
-)
-
-// Enum value maps for RecordContext_Variant_Role.
-var (
- RecordContext_Variant_Role_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "INDEX",
- 2: "VARIANT",
- }
- RecordContext_Variant_Role_value = map[string]int32{
- "UNKNOWN": 0,
- "INDEX": 1,
- "VARIANT": 2,
- }
-)
-
-func (x RecordContext_Variant_Role) Enum() *RecordContext_Variant_Role {
- p := new(RecordContext_Variant_Role)
- *p = x
- return p
-}
-
-func (x RecordContext_Variant_Role) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RecordContext_Variant_Role) Descriptor() protoreflect.EnumDescriptor {
- return file_context_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (RecordContext_Variant_Role) Type() protoreflect.EnumType {
- return &file_context_platform_proto_enumTypes[1]
-}
-
-func (x RecordContext_Variant_Role) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RecordContext_Variant_Role.Descriptor instead.
-func (RecordContext_Variant_Role) EnumDescriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0, 2, 0}
-}
-
-type RecordContext struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The RecordContext UIDP at which this RecordContext resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the RecordContext.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this RecordContext.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // last_seen tracks the timestamp at which this RecordContext was last seen.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // Types that are assignable to Kind:
- //
- // *RecordContext_Workload_
- // *RecordContext_Ancestry_
- // *RecordContext_Variant_
- Kind isRecordContext_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *RecordContext) Reset() {
- *x = RecordContext{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContext) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContext) ProtoMessage() {}
-
-func (x *RecordContext) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContext.ProtoReflect.Descriptor instead.
-func (*RecordContext) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RecordContext) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RecordContext) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *RecordContext) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *RecordContext) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (m *RecordContext) GetKind() isRecordContext_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *RecordContext) GetWorkload() *RecordContext_Workload {
- if x, ok := x.GetKind().(*RecordContext_Workload_); ok {
- return x.Workload
- }
- return nil
-}
-
-func (x *RecordContext) GetAncestry() *RecordContext_Ancestry {
- if x, ok := x.GetKind().(*RecordContext_Ancestry_); ok {
- return x.Ancestry
- }
- return nil
-}
-
-func (x *RecordContext) GetVariant() *RecordContext_Variant {
- if x, ok := x.GetKind().(*RecordContext_Variant_); ok {
- return x.Variant
- }
- return nil
-}
-
-type isRecordContext_Kind interface {
- isRecordContext_Kind()
-}
-
-type RecordContext_Workload_ struct {
- Workload *RecordContext_Workload `protobuf:"bytes,100,opt,name=workload,proto3,oneof"`
-}
-
-type RecordContext_Ancestry_ struct {
- Ancestry *RecordContext_Ancestry `protobuf:"bytes,101,opt,name=ancestry,proto3,oneof"`
-}
-
-type RecordContext_Variant_ struct {
- Variant *RecordContext_Variant `protobuf:"bytes,102,opt,name=variant,proto3,oneof"`
-}
-
-func (*RecordContext_Workload_) isRecordContext_Kind() {}
-
-func (*RecordContext_Ancestry_) isRecordContext_Kind() {}
-
-func (*RecordContext_Variant_) isRecordContext_Kind() {}
-
-type RecordContextList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*RecordContext `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RecordContextList) Reset() {
- *x = RecordContextList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContextList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContextList) ProtoMessage() {}
-
-func (x *RecordContextList) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContextList.ProtoReflect.Descriptor instead.
-func (*RecordContextList) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RecordContextList) GetItems() []*RecordContext {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type RecordContextFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
- // Allow filtering results based on matching fields in the context
- // ranging from just a particular "kind" to the exact workload shape.
- // Only specified fields will be used as part of the match.
- //
- // Types that are assignable to Kind:
- //
- // *RecordContextFilter_Workload
- // *RecordContextFilter_Ancestry
- // *RecordContextFilter_Variant
- Kind isRecordContextFilter_Kind `protobuf_oneof:"kind"`
-}
-
-func (x *RecordContextFilter) Reset() {
- *x = RecordContextFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContextFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContextFilter) ProtoMessage() {}
-
-func (x *RecordContextFilter) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContextFilter.ProtoReflect.Descriptor instead.
-func (*RecordContextFilter) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *RecordContextFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *RecordContextFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-func (m *RecordContextFilter) GetKind() isRecordContextFilter_Kind {
- if m != nil {
- return m.Kind
- }
- return nil
-}
-
-func (x *RecordContextFilter) GetWorkload() *RecordContext_Workload {
- if x, ok := x.GetKind().(*RecordContextFilter_Workload); ok {
- return x.Workload
- }
- return nil
-}
-
-func (x *RecordContextFilter) GetAncestry() *RecordContext_Ancestry {
- if x, ok := x.GetKind().(*RecordContextFilter_Ancestry); ok {
- return x.Ancestry
- }
- return nil
-}
-
-func (x *RecordContextFilter) GetVariant() *RecordContext_Variant {
- if x, ok := x.GetKind().(*RecordContextFilter_Variant); ok {
- return x.Variant
- }
- return nil
-}
-
-type isRecordContextFilter_Kind interface {
- isRecordContextFilter_Kind()
-}
-
-type RecordContextFilter_Workload struct {
- Workload *RecordContext_Workload `protobuf:"bytes,100,opt,name=workload,proto3,oneof"`
-}
-
-type RecordContextFilter_Ancestry struct {
- Ancestry *RecordContext_Ancestry `protobuf:"bytes,101,opt,name=ancestry,proto3,oneof"`
-}
-
-type RecordContextFilter_Variant struct {
- Variant *RecordContext_Variant `protobuf:"bytes,102,opt,name=variant,proto3,oneof"`
-}
-
-func (*RecordContextFilter_Workload) isRecordContextFilter_Kind() {}
-
-func (*RecordContextFilter_Ancestry) isRecordContextFilter_Kind() {}
-
-func (*RecordContextFilter_Variant) isRecordContextFilter_Kind() {}
-
-// Workload contexts are added to existence records that have been
-// observed running on a cluster.
-type RecordContext_Workload struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // remote_id is the metadata.uid of the workload in which this
- // container was observed.
- RemoteId string `protobuf:"bytes,1,opt,name=remote_id,json=remoteId,proto3" json:"remote_id,omitempty"`
-}
-
-func (x *RecordContext_Workload) Reset() {
- *x = RecordContext_Workload{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContext_Workload) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContext_Workload) ProtoMessage() {}
-
-func (x *RecordContext_Workload) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContext_Workload.ProtoReflect.Descriptor instead.
-func (*RecordContext_Workload) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *RecordContext_Workload) GetRemoteId() string {
- if x != nil {
- return x.RemoteId
- }
- return ""
-}
-
-// Ancestry relationships are added to records when a "base image"
-// relationship has been uncovered. This context is added to BOTH
-// records with their respective roles. The base image will get
-// the Role BASE, and the derivative image will get the Role DERIVED.
-type RecordContext_Ancestry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Role RecordContext_Ancestry_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.RecordContext_Ancestry_Role" json:"role,omitempty"`
- // image_id holds the digest of the related image, which can be used
- // to efficiently retrieve it's record.
- ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"`
-}
-
-func (x *RecordContext_Ancestry) Reset() {
- *x = RecordContext_Ancestry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContext_Ancestry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContext_Ancestry) ProtoMessage() {}
-
-func (x *RecordContext_Ancestry) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContext_Ancestry.ProtoReflect.Descriptor instead.
-func (*RecordContext_Ancestry) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *RecordContext_Ancestry) GetRole() RecordContext_Ancestry_Role {
- if x != nil {
- return x.Role
- }
- return RecordContext_Ancestry_UNKNOWN
-}
-
-func (x *RecordContext_Ancestry) GetImageId() string {
- if x != nil {
- return x.ImageId
- }
- return ""
-}
-
-// Variant relationships are added to records when we find an "index"
-// containing multiple different variations (typically os/arch) of the
-// same logical image. These are referred to as "OCI Image Index",
-// "Docker Manifest List", and occasionally "fat images". This context
-// is added to ALL records including the INDEX and all VARIANTs of that
-// index. The INDEX will typically contain N contexts carrying the Role
-// INDEX, the id of the VARIANT's record, and the version information
-// that discriminates that VARIANT from other VARIANTs. The VARIANT
-// will typically (but not always!) contain 1 context carrying the Role
-// VARIANT, the id of the INDEX's record, and the version information
-// that discriminates it among the other VARIANTs in the INDEX.
-type RecordContext_Variant struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Role RecordContext_Variant_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.RecordContext_Variant_Role" json:"role,omitempty"`
- // image_id holds the digest of the related image, which can be used
- // to efficiently retrieve it's record.
- ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"`
- // The version information distinguishing this variant
- // from other possible variants of the index.
- Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
-}
-
-func (x *RecordContext_Variant) Reset() {
- *x = RecordContext_Variant{}
- if protoimpl.UnsafeEnabled {
- mi := &file_context_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordContext_Variant) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordContext_Variant) ProtoMessage() {}
-
-func (x *RecordContext_Variant) ProtoReflect() protoreflect.Message {
- mi := &file_context_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordContext_Variant.ProtoReflect.Descriptor instead.
-func (*RecordContext_Variant) Descriptor() ([]byte, []int) {
- return file_context_platform_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *RecordContext_Variant) GetRole() RecordContext_Variant_Role {
- if x != nil {
- return x.Role
- }
- return RecordContext_Variant_UNKNOWN
-}
-
-func (x *RecordContext_Variant) GetImageId() string {
- if x != nil {
- return x.ImageId
- }
- return ""
-}
-
-func (x *RecordContext_Variant) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-var File_context_platform_proto protoreflect.FileDescriptor
-
-var file_context_platform_proto_rawDesc = []byte{
- 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76,
- 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x06, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a,
- 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
- 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x50, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f,
- 0x61, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08,
- 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65,
- 0x73, 0x74, 0x72, 0x79, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f,
- 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00,
- 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x07, 0x76, 0x61,
- 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x00,
- 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x1a, 0x27, 0x0a, 0x08, 0x57, 0x6f, 0x72,
- 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
- 0x49, 0x64, 0x1a, 0x9e, 0x01, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12,
- 0x4b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72,
- 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12,
- 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
- 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45,
- 0x44, 0x10, 0x02, 0x1a, 0xb7, 0x01, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12,
- 0x4a, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72,
- 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
- 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69,
- 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69,
- 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x22, 0x2b, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
- 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01,
- 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x06, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x54, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e,
- 0x74, 0x65, 0x78, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x13,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55,
- 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12,
- 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x50,
- 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
- 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
- 0x12, 0x50, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x18, 0x65, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x6e,
- 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74,
- 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x66, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
- 0x74, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x32, 0x88, 0x01, 0x0a, 0x0e, 0x52, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x76, 0x0a, 0x04,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
- 0xe5, 0x04, 0x10, 0x01, 0x42, 0x78, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x20, 0x50,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x63,
- 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
- 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65,
- 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_context_platform_proto_rawDescOnce sync.Once
- file_context_platform_proto_rawDescData = file_context_platform_proto_rawDesc
-)
-
-func file_context_platform_proto_rawDescGZIP() []byte {
- file_context_platform_proto_rawDescOnce.Do(func() {
- file_context_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_context_platform_proto_rawDescData)
- })
- return file_context_platform_proto_rawDescData
-}
-
-var file_context_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_context_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_context_platform_proto_goTypes = []interface{}{
- (RecordContext_Ancestry_Role)(0), // 0: chainguard.platform.tenant.RecordContext.Ancestry.Role
- (RecordContext_Variant_Role)(0), // 1: chainguard.platform.tenant.RecordContext.Variant.Role
- (*RecordContext)(nil), // 2: chainguard.platform.tenant.RecordContext
- (*RecordContextList)(nil), // 3: chainguard.platform.tenant.RecordContextList
- (*RecordContextFilter)(nil), // 4: chainguard.platform.tenant.RecordContextFilter
- (*RecordContext_Workload)(nil), // 5: chainguard.platform.tenant.RecordContext.Workload
- (*RecordContext_Ancestry)(nil), // 6: chainguard.platform.tenant.RecordContext.Ancestry
- (*RecordContext_Variant)(nil), // 7: chainguard.platform.tenant.RecordContext.Variant
- (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 9: chainguard.platform.common.UIDPFilter
-}
-var file_context_platform_proto_depIdxs = []int32{
- 8, // 0: chainguard.platform.tenant.RecordContext.last_seen:type_name -> google.protobuf.Timestamp
- 5, // 1: chainguard.platform.tenant.RecordContext.workload:type_name -> chainguard.platform.tenant.RecordContext.Workload
- 6, // 2: chainguard.platform.tenant.RecordContext.ancestry:type_name -> chainguard.platform.tenant.RecordContext.Ancestry
- 7, // 3: chainguard.platform.tenant.RecordContext.variant:type_name -> chainguard.platform.tenant.RecordContext.Variant
- 2, // 4: chainguard.platform.tenant.RecordContextList.items:type_name -> chainguard.platform.tenant.RecordContext
- 9, // 5: chainguard.platform.tenant.RecordContextFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 8, // 6: chainguard.platform.tenant.RecordContextFilter.active_since:type_name -> google.protobuf.Timestamp
- 5, // 7: chainguard.platform.tenant.RecordContextFilter.workload:type_name -> chainguard.platform.tenant.RecordContext.Workload
- 6, // 8: chainguard.platform.tenant.RecordContextFilter.ancestry:type_name -> chainguard.platform.tenant.RecordContext.Ancestry
- 7, // 9: chainguard.platform.tenant.RecordContextFilter.variant:type_name -> chainguard.platform.tenant.RecordContext.Variant
- 0, // 10: chainguard.platform.tenant.RecordContext.Ancestry.role:type_name -> chainguard.platform.tenant.RecordContext.Ancestry.Role
- 1, // 11: chainguard.platform.tenant.RecordContext.Variant.role:type_name -> chainguard.platform.tenant.RecordContext.Variant.Role
- 4, // 12: chainguard.platform.tenant.RecordContexts.List:input_type -> chainguard.platform.tenant.RecordContextFilter
- 3, // 13: chainguard.platform.tenant.RecordContexts.List:output_type -> chainguard.platform.tenant.RecordContextList
- 13, // [13:14] is the sub-list for method output_type
- 12, // [12:13] is the sub-list for method input_type
- 12, // [12:12] is the sub-list for extension type_name
- 12, // [12:12] is the sub-list for extension extendee
- 0, // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_context_platform_proto_init() }
-func file_context_platform_proto_init() {
- if File_context_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_context_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContext); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_context_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContextList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_context_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContextFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_context_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContext_Workload); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_context_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContext_Ancestry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_context_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordContext_Variant); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_context_platform_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*RecordContext_Workload_)(nil),
- (*RecordContext_Ancestry_)(nil),
- (*RecordContext_Variant_)(nil),
- }
- file_context_platform_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*RecordContextFilter_Workload)(nil),
- (*RecordContextFilter_Ancestry)(nil),
- (*RecordContextFilter_Variant)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_context_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 6,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_context_platform_proto_goTypes,
- DependencyIndexes: file_context_platform_proto_depIdxs,
- EnumInfos: file_context_platform_proto_enumTypes,
- MessageInfos: file_context_platform_proto_msgTypes,
- }.Build()
- File_context_platform_proto = out.File
- file_context_platform_proto_rawDesc = nil
- file_context_platform_proto_goTypes = nil
- file_context_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/context.platform.proto b/proto/platform/tenant/v1/context.platform.proto
deleted file mode 100644
index b16427b9..00000000
--- a/proto/platform/tenant/v1/context.platform.proto
+++ /dev/null
@@ -1,119 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantRecordContextProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service RecordContexts {
- rpc List(RecordContextFilter) returns (RecordContextList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_RECORD_CONTEXTS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message RecordContext {
- // id, The RecordContext UIDP at which this RecordContext resides.
- string id = 1;
-
- // name of the RecordContext.
- string name = 2;
-
- // a short description of this RecordContext.
- string description = 3;
-
- // last_seen tracks the timestamp at which this RecordContext was last seen.
- google.protobuf.Timestamp last_seen = 4;
-
- oneof kind {
- Workload workload = 100;
- Ancestry ancestry = 101;
- Variant variant = 102;
- }
-
- // Workload contexts are added to existence records that have been
- // observed running on a cluster.
- message Workload {
- // remote_id is the metadata.uid of the workload in which this
- // container was observed.
- string remote_id = 1;
- }
-
- // Ancestry relationships are added to records when a "base image"
- // relationship has been uncovered. This context is added to BOTH
- // records with their respective roles. The base image will get
- // the Role BASE, and the derivative image will get the Role DERIVED.
- message Ancestry {
- Role role = 1;
-
- // image_id holds the digest of the related image, which can be used
- // to efficiently retrieve it's record.
- string image_id = 2;
-
- enum Role {
- UNKNOWN = 0;
- BASE = 1;
- DERIVED = 2;
- }
- }
-
- // Variant relationships are added to records when we find an "index"
- // containing multiple different variations (typically os/arch) of the
- // same logical image. These are referred to as "OCI Image Index",
- // "Docker Manifest List", and occasionally "fat images". This context
- // is added to ALL records including the INDEX and all VARIANTs of that
- // index. The INDEX will typically contain N contexts carrying the Role
- // INDEX, the id of the VARIANT's record, and the version information
- // that discriminates that VARIANT from other VARIANTs. The VARIANT
- // will typically (but not always!) contain 1 context carrying the Role
- // VARIANT, the id of the INDEX's record, and the version information
- // that discriminates it among the other VARIANTs in the INDEX.
- message Variant {
- Role role = 1;
-
- // image_id holds the digest of the related image, which can be used
- // to efficiently retrieve it's record.
- string image_id = 2;
-
- // The version information distinguishing this variant
- // from other possible variants of the index.
- string version = 3;
-
- enum Role {
- UNKNOWN = 0;
- INDEX = 1;
- VARIANT = 2;
- }
- }
-}
-
-message RecordContextList {
- repeated RecordContext items = 1;
-}
-
-message RecordContextFilter {
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // active_since is the timestamp after which the records should
- // have last been observed in the returned context.
- google.protobuf.Timestamp active_since = 2;
-
- // Allow filtering results based on matching fields in the context
- // ranging from just a particular "kind" to the exact workload shape.
- // Only specified fields will be used as part of the match.
- oneof kind {
- RecordContext.Workload workload = 100;
- RecordContext.Ancestry ancestry = 101;
- RecordContext.Variant variant = 102;
- }
-}
diff --git a/proto/platform/tenant/v1/context.platform_grpc.pb.go b/proto/platform/tenant/v1/context.platform_grpc.pb.go
deleted file mode 100644
index 41ca8f95..00000000
--- a/proto/platform/tenant/v1/context.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: context.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- RecordContexts_List_FullMethodName = "/chainguard.platform.tenant.RecordContexts/List"
-)
-
-// RecordContextsClient is the client API for RecordContexts service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RecordContextsClient interface {
- List(ctx context.Context, in *RecordContextFilter, opts ...grpc.CallOption) (*RecordContextList, error)
-}
-
-type recordContextsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRecordContextsClient(cc grpc.ClientConnInterface) RecordContextsClient {
- return &recordContextsClient{cc}
-}
-
-func (c *recordContextsClient) List(ctx context.Context, in *RecordContextFilter, opts ...grpc.CallOption) (*RecordContextList, error) {
- out := new(RecordContextList)
- err := c.cc.Invoke(ctx, RecordContexts_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RecordContextsServer is the server API for RecordContexts service.
-// All implementations must embed UnimplementedRecordContextsServer
-// for forward compatibility
-type RecordContextsServer interface {
- List(context.Context, *RecordContextFilter) (*RecordContextList, error)
- mustEmbedUnimplementedRecordContextsServer()
-}
-
-// UnimplementedRecordContextsServer must be embedded to have forward compatible implementations.
-type UnimplementedRecordContextsServer struct {
-}
-
-func (UnimplementedRecordContextsServer) List(context.Context, *RecordContextFilter) (*RecordContextList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedRecordContextsServer) mustEmbedUnimplementedRecordContextsServer() {}
-
-// UnsafeRecordContextsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RecordContextsServer will
-// result in compilation errors.
-type UnsafeRecordContextsServer interface {
- mustEmbedUnimplementedRecordContextsServer()
-}
-
-func RegisterRecordContextsServer(s grpc.ServiceRegistrar, srv RecordContextsServer) {
- s.RegisterService(&RecordContexts_ServiceDesc, srv)
-}
-
-func _RecordContexts_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RecordContextFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RecordContextsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: RecordContexts_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RecordContextsServer).List(ctx, req.(*RecordContextFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// RecordContexts_ServiceDesc is the grpc.ServiceDesc for RecordContexts service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var RecordContexts_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.RecordContexts",
- HandlerType: (*RecordContextsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _RecordContexts_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "context.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
index 4189082a..fefa86c9 100644
--- a/proto/platform/tenant/v1/doc.go
+++ b/proto/platform/tenant/v1/doc.go
@@ -6,8 +6,6 @@ SPDX-License-Identifier: Apache-2.0
// Package v1 contains the v1 GRPC client and server definitions
// for implementing Tenant interactions for the Console.
//
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative context.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative policy_results.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. record.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
diff --git a/proto/platform/tenant/v1/policy_results.platform.pb.go b/proto/platform/tenant/v1/policy_results.platform.pb.go
deleted file mode 100644
index 29473a76..00000000
--- a/proto/platform/tenant/v1/policy_results.platform.pb.go
+++ /dev/null
@@ -1,770 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: policy_results.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type PolicyResult_Result int32
-
-const (
- PolicyResult_UNKNOWN PolicyResult_Result = 0
- // PASS represents when a policy evaluation completed without any
- // diagnostics returned.
- PolicyResult_PASS PolicyResult_Result = 1
- // WARN represents when a policy evaluation completed with warnings
- // (e.g. the policy used mode: warn).
- PolicyResult_WARN PolicyResult_Result = 2
- // FAIL represents when a policy evaluation completed with errors
- // (e.g. the policy used mode: enforce).
- PolicyResult_FAIL PolicyResult_Result = 3
-)
-
-// Enum value maps for PolicyResult_Result.
-var (
- PolicyResult_Result_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "PASS",
- 2: "WARN",
- 3: "FAIL",
- }
- PolicyResult_Result_value = map[string]int32{
- "UNKNOWN": 0,
- "PASS": 1,
- "WARN": 2,
- "FAIL": 3,
- }
-)
-
-func (x PolicyResult_Result) Enum() *PolicyResult_Result {
- p := new(PolicyResult_Result)
- *p = x
- return p
-}
-
-func (x PolicyResult_Result) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PolicyResult_Result) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_results_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (PolicyResult_Result) Type() protoreflect.EnumType {
- return &file_policy_results_platform_proto_enumTypes[0]
-}
-
-func (x PolicyResult_Result) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use PolicyResult_Result.Descriptor instead.
-func (PolicyResult_Result) EnumDescriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type PolicyResult_ParentType int32
-
-const (
- PolicyResult_PARENT_TYPE_UNKNOWN PolicyResult_ParentType = 0
- PolicyResult_RECORD PolicyResult_ParentType = 1
- PolicyResult_RECORD_CONTEXT PolicyResult_ParentType = 2
- PolicyResult_WORKLOAD PolicyResult_ParentType = 3
-)
-
-// Enum value maps for PolicyResult_ParentType.
-var (
- PolicyResult_ParentType_name = map[int32]string{
- 0: "PARENT_TYPE_UNKNOWN",
- 1: "RECORD",
- 2: "RECORD_CONTEXT",
- 3: "WORKLOAD",
- }
- PolicyResult_ParentType_value = map[string]int32{
- "PARENT_TYPE_UNKNOWN": 0,
- "RECORD": 1,
- "RECORD_CONTEXT": 2,
- "WORKLOAD": 3,
- }
-)
-
-func (x PolicyResult_ParentType) Enum() *PolicyResult_ParentType {
- p := new(PolicyResult_ParentType)
- *p = x
- return p
-}
-
-func (x PolicyResult_ParentType) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PolicyResult_ParentType) Descriptor() protoreflect.EnumDescriptor {
- return file_policy_results_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (PolicyResult_ParentType) Type() protoreflect.EnumType {
- return &file_policy_results_platform_proto_enumTypes[1]
-}
-
-func (x PolicyResult_ParentType) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use PolicyResult_ParentType.Descriptor instead.
-func (PolicyResult_ParentType) EnumDescriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-type PolicyResult struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id, The PolicyResult UIDP at which this PolicyResult resides.
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // name of the PolicyResult.
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- // a short description of this PolicyResult.
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // policy_id is the metadata.uid of the Policy this result captures an evaluation of.
- PolicyId string `protobuf:"bytes,4,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- // version is the metadata.resourceVersion of the Policy this result captures an evaluation of.
- Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
- // last_checked tracks the timestamp at which this policy result was last checked.
- LastChecked *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
- // result holds the result of this policy evaluation.
- Result PolicyResult_Result `protobuf:"varint,7,opt,name=result,proto3,enum=chainguard.platform.tenant.PolicyResult_Result" json:"result,omitempty"`
- // diagnostic holds the diagnostic message associated with the result of this policy evaluation.
- Diagnostic string `protobuf:"bytes,8,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
- // This loosely tracks the policy-controller's PolicyResult type found here:
- // https://github.com/sigstore/policy-controller/blob/f777dcc2e/pkg/webhook/validator_result.go
- AuthorityMatches map[string]*PolicyResult_AuthorityMatch `protobuf:"bytes,9,rep,name=authority_matches,json=authorityMatches,proto3" json:"authority_matches,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // parent_type, It is the parent type associated with the PolicyResult, can be Record, RecordContext or Workload.
- ParentType PolicyResult_ParentType `protobuf:"varint,10,opt,name=parent_type,json=parentType,proto3,enum=chainguard.platform.tenant.PolicyResult_ParentType" json:"parent_type,omitempty"`
-}
-
-func (x *PolicyResult) Reset() {
- *x = PolicyResult{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policy_results_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyResult) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyResult) ProtoMessage() {}
-
-func (x *PolicyResult) ProtoReflect() protoreflect.Message {
- mi := &file_policy_results_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyResult.ProtoReflect.Descriptor instead.
-func (*PolicyResult) Descriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *PolicyResult) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *PolicyResult) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *PolicyResult) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *PolicyResult) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
- }
- return ""
-}
-
-func (x *PolicyResult) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *PolicyResult) GetLastChecked() *timestamppb.Timestamp {
- if x != nil {
- return x.LastChecked
- }
- return nil
-}
-
-func (x *PolicyResult) GetResult() PolicyResult_Result {
- if x != nil {
- return x.Result
- }
- return PolicyResult_UNKNOWN
-}
-
-func (x *PolicyResult) GetDiagnostic() string {
- if x != nil {
- return x.Diagnostic
- }
- return ""
-}
-
-func (x *PolicyResult) GetAuthorityMatches() map[string]*PolicyResult_AuthorityMatch {
- if x != nil {
- return x.AuthorityMatches
- }
- return nil
-}
-
-func (x *PolicyResult) GetParentType() PolicyResult_ParentType {
- if x != nil {
- return x.ParentType
- }
- return PolicyResult_PARENT_TYPE_UNKNOWN
-}
-
-type PolicyResultList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*PolicyResult `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *PolicyResultList) Reset() {
- *x = PolicyResultList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policy_results_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyResultList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyResultList) ProtoMessage() {}
-
-func (x *PolicyResultList) ProtoReflect() protoreflect.Message {
- mi := &file_policy_results_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyResultList.ProtoReflect.Descriptor instead.
-func (*PolicyResultList) Descriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *PolicyResultList) GetItems() []*PolicyResult {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type PolicyResultFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Uidp *v1.UIDPFilter `protobuf:"bytes,1,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // checked_since is the timestamp after which the policy should
- // have last been checked.
- CheckedSince *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=checked_since,json=checkedSince,proto3" json:"checked_since,omitempty"`
- // policy_id looks up evaluations of the policy identified by this metadata.uid
- PolicyId string `protobuf:"bytes,3,opt,name=policy_id,json=policyId,proto3" json:"policy_id,omitempty"`
- // results filters policy results with one of the provided result.
- Results []PolicyResult_Result `protobuf:"varint,4,rep,packed,name=results,proto3,enum=chainguard.platform.tenant.PolicyResult_Result" json:"results,omitempty"`
- // parent_type filters policy results with the provided parent_type.
- ParentType PolicyResult_ParentType `protobuf:"varint,5,opt,name=parent_type,json=parentType,proto3,enum=chainguard.platform.tenant.PolicyResult_ParentType" json:"parent_type,omitempty"`
-}
-
-func (x *PolicyResultFilter) Reset() {
- *x = PolicyResultFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policy_results_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyResultFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyResultFilter) ProtoMessage() {}
-
-func (x *PolicyResultFilter) ProtoReflect() protoreflect.Message {
- mi := &file_policy_results_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyResultFilter.ProtoReflect.Descriptor instead.
-func (*PolicyResultFilter) Descriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *PolicyResultFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *PolicyResultFilter) GetCheckedSince() *timestamppb.Timestamp {
- if x != nil {
- return x.CheckedSince
- }
- return nil
-}
-
-func (x *PolicyResultFilter) GetPolicyId() string {
- if x != nil {
- return x.PolicyId
- }
- return ""
-}
-
-func (x *PolicyResultFilter) GetResults() []PolicyResult_Result {
- if x != nil {
- return x.Results
- }
- return nil
-}
-
-func (x *PolicyResultFilter) GetParentType() PolicyResult_ParentType {
- if x != nil {
- return x.ParentType
- }
- return PolicyResult_PARENT_TYPE_UNKNOWN
-}
-
-type PolicyResult_AuthorityMatch struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The matched signatures.
- Signatures *PolicyResult_AuthorityMatch_SignatureMatches `protobuf:"bytes,1,opt,name=signatures,proto3" json:"signatures,omitempty"`
- // A map from attestation name to matched attestations.
- Attestations map[string]*PolicyResult_AuthorityMatch_SignatureMatches `protobuf:"bytes,2,rep,name=attestations,proto3" json:"attestations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *PolicyResult_AuthorityMatch) Reset() {
- *x = PolicyResult_AuthorityMatch{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policy_results_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyResult_AuthorityMatch) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyResult_AuthorityMatch) ProtoMessage() {}
-
-func (x *PolicyResult_AuthorityMatch) ProtoReflect() protoreflect.Message {
- mi := &file_policy_results_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyResult_AuthorityMatch.ProtoReflect.Descriptor instead.
-func (*PolicyResult_AuthorityMatch) Descriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *PolicyResult_AuthorityMatch) GetSignatures() *PolicyResult_AuthorityMatch_SignatureMatches {
- if x != nil {
- return x.Signatures
- }
- return nil
-}
-
-func (x *PolicyResult_AuthorityMatch) GetAttestations() map[string]*PolicyResult_AuthorityMatch_SignatureMatches {
- if x != nil {
- return x.Attestations
- }
- return nil
-}
-
-type PolicyResult_AuthorityMatch_SignatureMatches struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // The list of signature record UIDPs
- Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
-}
-
-func (x *PolicyResult_AuthorityMatch_SignatureMatches) Reset() {
- *x = PolicyResult_AuthorityMatch_SignatureMatches{}
- if protoimpl.UnsafeEnabled {
- mi := &file_policy_results_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *PolicyResult_AuthorityMatch_SignatureMatches) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PolicyResult_AuthorityMatch_SignatureMatches) ProtoMessage() {}
-
-func (x *PolicyResult_AuthorityMatch_SignatureMatches) ProtoReflect() protoreflect.Message {
- mi := &file_policy_results_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use PolicyResult_AuthorityMatch_SignatureMatches.ProtoReflect.Descriptor instead.
-func (*PolicyResult_AuthorityMatch_SignatureMatches) Descriptor() ([]byte, []int) {
- return file_policy_results_platform_proto_rawDescGZIP(), []int{0, 1, 1}
-}
-
-func (x *PolicyResult_AuthorityMatch_SignatureMatches) GetIds() []string {
- if x != nil {
- return x.Ids
- }
- return nil
-}
-
-var File_policy_results_platform_proto protoreflect.FileDescriptor
-
-var file_policy_results_platform_proto_rawDesc = []byte{
- 0x0a, 0x1d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
- 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e,
- 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x09, 0x0a,
- 0x0c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61,
- 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61,
- 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x72, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
- 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74,
- 0x69, 0x63, 0x12, 0x6b, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f,
- 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x61,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12,
- 0x54, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x7c, 0x0a, 0x15, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x9b, 0x03, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x68, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
- 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61,
- 0x74, 0x63, 0x68, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x65, 0x73, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
- 0x12, 0x6d, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
- 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a,
- 0x89, 0x01, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
- 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x24, 0x0a, 0x10, 0x53,
- 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12,
- 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64,
- 0x73, 0x22, 0x33, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55,
- 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53,
- 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,
- 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x22, 0x53, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a,
- 0x06, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x43,
- 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a,
- 0x08, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x03, 0x22, 0x52, 0x0a, 0x10, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
- 0xcf, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69,
- 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69,
- 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
- 0x12, 0x49, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
- 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x0b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
- 0x65, 0x32, 0x85, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75,
- 0x6c, 0x74, 0x73, 0x12, 0x74, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
- 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0e, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x02, 0xf9, 0x04, 0x10, 0x01, 0x42, 0x77, 0x0a, 0x25, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x76, 0x31, 0x42, 0x1f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61,
- 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f,
- 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_policy_results_platform_proto_rawDescOnce sync.Once
- file_policy_results_platform_proto_rawDescData = file_policy_results_platform_proto_rawDesc
-)
-
-func file_policy_results_platform_proto_rawDescGZIP() []byte {
- file_policy_results_platform_proto_rawDescOnce.Do(func() {
- file_policy_results_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_policy_results_platform_proto_rawDescData)
- })
- return file_policy_results_platform_proto_rawDescData
-}
-
-var file_policy_results_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_policy_results_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_policy_results_platform_proto_goTypes = []interface{}{
- (PolicyResult_Result)(0), // 0: chainguard.platform.tenant.PolicyResult.Result
- (PolicyResult_ParentType)(0), // 1: chainguard.platform.tenant.PolicyResult.ParentType
- (*PolicyResult)(nil), // 2: chainguard.platform.tenant.PolicyResult
- (*PolicyResultList)(nil), // 3: chainguard.platform.tenant.PolicyResultList
- (*PolicyResultFilter)(nil), // 4: chainguard.platform.tenant.PolicyResultFilter
- nil, // 5: chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry
- (*PolicyResult_AuthorityMatch)(nil), // 6: chainguard.platform.tenant.PolicyResult.AuthorityMatch
- nil, // 7: chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry
- (*PolicyResult_AuthorityMatch_SignatureMatches)(nil), // 8: chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
- (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 10: chainguard.platform.common.UIDPFilter
-}
-var file_policy_results_platform_proto_depIdxs = []int32{
- 9, // 0: chainguard.platform.tenant.PolicyResult.last_checked:type_name -> google.protobuf.Timestamp
- 0, // 1: chainguard.platform.tenant.PolicyResult.result:type_name -> chainguard.platform.tenant.PolicyResult.Result
- 5, // 2: chainguard.platform.tenant.PolicyResult.authority_matches:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry
- 1, // 3: chainguard.platform.tenant.PolicyResult.parent_type:type_name -> chainguard.platform.tenant.PolicyResult.ParentType
- 2, // 4: chainguard.platform.tenant.PolicyResultList.items:type_name -> chainguard.platform.tenant.PolicyResult
- 10, // 5: chainguard.platform.tenant.PolicyResultFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 6: chainguard.platform.tenant.PolicyResultFilter.checked_since:type_name -> google.protobuf.Timestamp
- 0, // 7: chainguard.platform.tenant.PolicyResultFilter.results:type_name -> chainguard.platform.tenant.PolicyResult.Result
- 1, // 8: chainguard.platform.tenant.PolicyResultFilter.parent_type:type_name -> chainguard.platform.tenant.PolicyResult.ParentType
- 6, // 9: chainguard.platform.tenant.PolicyResult.AuthorityMatchesEntry.value:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch
- 8, // 10: chainguard.platform.tenant.PolicyResult.AuthorityMatch.signatures:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
- 7, // 11: chainguard.platform.tenant.PolicyResult.AuthorityMatch.attestations:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry
- 8, // 12: chainguard.platform.tenant.PolicyResult.AuthorityMatch.AttestationsEntry.value:type_name -> chainguard.platform.tenant.PolicyResult.AuthorityMatch.SignatureMatches
- 4, // 13: chainguard.platform.tenant.PolicyResults.List:input_type -> chainguard.platform.tenant.PolicyResultFilter
- 3, // 14: chainguard.platform.tenant.PolicyResults.List:output_type -> chainguard.platform.tenant.PolicyResultList
- 14, // [14:15] is the sub-list for method output_type
- 13, // [13:14] is the sub-list for method input_type
- 13, // [13:13] is the sub-list for extension type_name
- 13, // [13:13] is the sub-list for extension extendee
- 0, // [0:13] is the sub-list for field type_name
-}
-
-func init() { file_policy_results_platform_proto_init() }
-func file_policy_results_platform_proto_init() {
- if File_policy_results_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_policy_results_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyResult); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policy_results_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyResultList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policy_results_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyResultFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policy_results_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyResult_AuthorityMatch); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_policy_results_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PolicyResult_AuthorityMatch_SignatureMatches); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_policy_results_platform_proto_rawDesc,
- NumEnums: 2,
- NumMessages: 7,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_policy_results_platform_proto_goTypes,
- DependencyIndexes: file_policy_results_platform_proto_depIdxs,
- EnumInfos: file_policy_results_platform_proto_enumTypes,
- MessageInfos: file_policy_results_platform_proto_msgTypes,
- }.Build()
- File_policy_results_platform_proto = out.File
- file_policy_results_platform_proto_rawDesc = nil
- file_policy_results_platform_proto_goTypes = nil
- file_policy_results_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/policy_results.platform.pb.gw.go b/proto/platform/tenant/v1/policy_results.platform.pb.gw.go
deleted file mode 100644
index a1b084bb..00000000
--- a/proto/platform/tenant/v1/policy_results.platform.pb.gw.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: policy_results.platform.proto
-
-/*
-Package tenant is a reverse proxy.
-
-It translates gRPC into RESTful JSON APIs.
-*/
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_PolicyResults_List_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
-)
-
-func request_PolicyResults_List_0(ctx context.Context, marshaler runtime.Marshaler, client PolicyResultsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PolicyResultFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PolicyResults_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_PolicyResults_List_0(ctx context.Context, marshaler runtime.Marshaler, server PolicyResultsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PolicyResultFilter
- var metadata runtime.ServerMetadata
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PolicyResults_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterPolicyResultsHandlerServer registers the http handlers for service PolicyResults to "mux".
-// UnaryRPC :call PolicyResultsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPolicyResultsHandlerFromEndpoint instead.
-func RegisterPolicyResultsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PolicyResultsServer) error {
-
- mux.Handle("GET", pattern_PolicyResults_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.PolicyResults/List", runtime.WithHTTPPathPattern("/tenant/v1/policyResults"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_PolicyResults_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_PolicyResults_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterPolicyResultsHandlerFromEndpoint is same as RegisterPolicyResultsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterPolicyResultsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterPolicyResultsHandler(ctx, mux, conn)
-}
-
-// RegisterPolicyResultsHandler registers the http handlers for service PolicyResults to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterPolicyResultsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterPolicyResultsHandlerClient(ctx, mux, NewPolicyResultsClient(conn))
-}
-
-// RegisterPolicyResultsHandlerClient registers the http handlers for service PolicyResults
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PolicyResultsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PolicyResultsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "PolicyResultsClient" to call the correct interceptors.
-func RegisterPolicyResultsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PolicyResultsClient) error {
-
- mux.Handle("GET", pattern_PolicyResults_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.PolicyResults/List", runtime.WithHTTPPathPattern("/tenant/v1/policyResults"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_PolicyResults_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_PolicyResults_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_PolicyResults_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"tenant", "v1", "policyResults"}, ""))
-)
-
-var (
- forward_PolicyResults_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/policy_results.platform.proto b/proto/platform/tenant/v1/policy_results.platform.proto
deleted file mode 100644
index d0680fea..00000000
--- a/proto/platform/tenant/v1/policy_results.platform.proto
+++ /dev/null
@@ -1,113 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantPolicyResultProto";
-
-package chainguard.platform.tenant;
-
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service PolicyResults {
- rpc List(PolicyResultFilter) returns (PolicyResultList) {
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_RECORD_POLICY_RESULTS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message PolicyResult {
- // id, The PolicyResult UIDP at which this PolicyResult resides.
- string id = 1;
-
- // name of the PolicyResult.
- string name = 2;
-
- // a short description of this PolicyResult.
- string description = 3;
-
- // policy_id is the metadata.uid of the Policy this result captures an evaluation of.
- string policy_id = 4;
-
- // version is the metadata.resourceVersion of the Policy this result captures an evaluation of.
- string version = 5;
-
- // last_checked tracks the timestamp at which this policy result was last checked.
- google.protobuf.Timestamp last_checked = 6;
-
- // result holds the result of this policy evaluation.
- Result result = 7;
-
- // diagnostic holds the diagnostic message associated with the result of this policy evaluation.
- string diagnostic = 8;
-
- enum Result {
- UNKNOWN = 0;
-
- // PASS represents when a policy evaluation completed without any
- // diagnostics returned.
- PASS = 1;
-
- // WARN represents when a policy evaluation completed with warnings
- // (e.g. the policy used mode: warn).
- WARN = 2;
-
- // FAIL represents when a policy evaluation completed with errors
- // (e.g. the policy used mode: enforce).
- FAIL = 3;
- }
-
- // This loosely tracks the policy-controller's PolicyResult type found here:
- // https://github.com/sigstore/policy-controller/blob/f777dcc2e/pkg/webhook/validator_result.go
- map authority_matches = 9;
-
- message AuthorityMatch {
- // The matched signatures.
- SignatureMatches signatures = 1;
-
- // A map from attestation name to matched attestations.
- map attestations = 2;
-
- message SignatureMatches {
- // The list of signature record UIDPs
- repeated string ids = 1;
- }
- }
-
- // parent_type, It is the parent type associated with the PolicyResult, can be Record, RecordContext or Workload.
- ParentType parent_type = 10;
-
- enum ParentType {
- PARENT_TYPE_UNKNOWN = 0;
- RECORD = 1;
- RECORD_CONTEXT = 2;
- WORKLOAD = 3;
- }
-}
-
-message PolicyResultList {
- repeated PolicyResult items = 1;
-}
-
-message PolicyResultFilter {
- chainguard.platform.common.UIDPFilter uidp = 1;
-
- // checked_since is the timestamp after which the policy should
- // have last been checked.
- google.protobuf.Timestamp checked_since = 2;
-
- // policy_id looks up evaluations of the policy identified by this metadata.uid
- string policy_id = 3;
-
- // results filters policy results with one of the provided result.
- repeated PolicyResult.Result results = 4;
-
- // parent_type filters policy results with the provided parent_type.
- PolicyResult.ParentType parent_type = 5;
-}
diff --git a/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go b/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
deleted file mode 100644
index 148a00b6..00000000
--- a/proto/platform/tenant/v1/policy_results.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: policy_results.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- PolicyResults_List_FullMethodName = "/chainguard.platform.tenant.PolicyResults/List"
-)
-
-// PolicyResultsClient is the client API for PolicyResults service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type PolicyResultsClient interface {
- List(ctx context.Context, in *PolicyResultFilter, opts ...grpc.CallOption) (*PolicyResultList, error)
-}
-
-type policyResultsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewPolicyResultsClient(cc grpc.ClientConnInterface) PolicyResultsClient {
- return &policyResultsClient{cc}
-}
-
-func (c *policyResultsClient) List(ctx context.Context, in *PolicyResultFilter, opts ...grpc.CallOption) (*PolicyResultList, error) {
- out := new(PolicyResultList)
- err := c.cc.Invoke(ctx, PolicyResults_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// PolicyResultsServer is the server API for PolicyResults service.
-// All implementations must embed UnimplementedPolicyResultsServer
-// for forward compatibility
-type PolicyResultsServer interface {
- List(context.Context, *PolicyResultFilter) (*PolicyResultList, error)
- mustEmbedUnimplementedPolicyResultsServer()
-}
-
-// UnimplementedPolicyResultsServer must be embedded to have forward compatible implementations.
-type UnimplementedPolicyResultsServer struct {
-}
-
-func (UnimplementedPolicyResultsServer) List(context.Context, *PolicyResultFilter) (*PolicyResultList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedPolicyResultsServer) mustEmbedUnimplementedPolicyResultsServer() {}
-
-// UnsafePolicyResultsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to PolicyResultsServer will
-// result in compilation errors.
-type UnsafePolicyResultsServer interface {
- mustEmbedUnimplementedPolicyResultsServer()
-}
-
-func RegisterPolicyResultsServer(s grpc.ServiceRegistrar, srv PolicyResultsServer) {
- s.RegisterService(&PolicyResults_ServiceDesc, srv)
-}
-
-func _PolicyResults_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(PolicyResultFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(PolicyResultsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: PolicyResults_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(PolicyResultsServer).List(ctx, req.(*PolicyResultFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// PolicyResults_ServiceDesc is the grpc.ServiceDesc for PolicyResults service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var PolicyResults_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.PolicyResults",
- HandlerType: (*PolicyResultsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _PolicyResults_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "policy_results.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
index 5d4fdc68..8c0ac6d6 100644
--- a/proto/platform/tenant/v1/test/mock_client.go
+++ b/proto/platform/tenant/v1/test/mock_client.go
@@ -12,13 +12,11 @@ import (
type MockTenantClient struct {
OnClose error
- RecordsClient MockRecordsClient
- RecordContextsClient MockRecordContextsClient
- SbomsClient MockSbomsClient
- SignaturesClient MockSignaturesClient
- PolicyResultsClient MockPolicyResultsClient
- VulnReportsClient MockVulnReportsClient
- AttestationClient MockAttestationsClientt
+ RecordsClient MockRecordsClient
+ SbomsClient MockSbomsClient
+ SignaturesClient MockSignaturesClient
+ VulnReportsClient MockVulnReportsClient
+ AttestationClient MockAttestationsClientt
}
var _ tenant.Clients = (*MockTenantClient)(nil)
@@ -27,10 +25,6 @@ func (m MockTenantClient) Records() tenant.RecordsClient {
return &m.RecordsClient
}
-func (m MockTenantClient) RecordContexts() tenant.RecordContextsClient {
- return &m.RecordContextsClient
-}
-
func (m MockTenantClient) Sboms() tenant.SbomsClient {
return &m.SbomsClient
}
@@ -39,10 +33,6 @@ func (m MockTenantClient) Signatures() tenant.SignaturesClient {
return &m.SignaturesClient
}
-func (m MockTenantClient) PolicyResults() tenant.PolicyResultsClient {
- return &m.PolicyResultsClient
-}
-
func (m MockTenantClient) VulnReports() tenant.VulnReportsClient {
return &m.VulnReportsClient
}
diff --git a/proto/platform/tenant/v1/test/mock_contexts.go b/proto/platform/tenant/v1/test/mock_contexts.go
deleted file mode 100644
index 1bf9a53a..00000000
--- a/proto/platform/tenant/v1/test/mock_contexts.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.RecordContextsClient = (*MockRecordContextsClient)(nil)
-
-type MockRecordContextsClient struct {
- OnList []RecordContextsOnList
-}
-
-type RecordContextsOnList struct {
- Given *tenant.RecordContextFilter
- List *tenant.RecordContextList
- Error error
-}
-
-func (m MockRecordContextsClient) List(_ context.Context, given *tenant.RecordContextFilter, _ ...grpc.CallOption) (*tenant.RecordContextList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
diff --git a/proto/platform/tenant/v1/test/mock_policy_results.go b/proto/platform/tenant/v1/test/mock_policy_results.go
deleted file mode 100644
index 790caa73..00000000
--- a/proto/platform/tenant/v1/test/mock_policy_results.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.PolicyResultsClient = (*MockPolicyResultsClient)(nil)
-
-type MockPolicyResultsClient struct {
- OnList []PolicyResultsOnList
-}
-
-type PolicyResultsOnList struct {
- Given *tenant.PolicyResultFilter
- List *tenant.PolicyResultList
- Error error
-}
-
-func (m MockPolicyResultsClient) List(_ context.Context, given *tenant.PolicyResultFilter, _ ...grpc.CallOption) (*tenant.PolicyResultList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
From 774fffcbc38f176903bd78b9ff5fb5ed4f2a1ad9 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Mon, 22 Apr 2024 13:35:49 -0700
Subject: [PATCH 28/41] Export 4a5cb79bb0102a8495186517ddd92f832eb5a4b1
Export: 4a5cb79bb0102a8495186517ddd92f832eb5a4b1
---
events/admission/admission.go | 18 -
events/admission/namespace.go | 55 -
events/policy/policy.go | 46 -
go.mod | 2 +-
proto/platform/tenant/v1/clients.go | 9 -
proto/platform/tenant/v1/doc.go | 1 -
.../platform/tenant/v1/record.platform.pb.go | 1465 -----------------
.../tenant/v1/record.platform.pb.gw.go | 200 ---
.../platform/tenant/v1/record.platform.proto | 203 ---
.../tenant/v1/record.platform_grpc.pb.go | 109 --
proto/platform/tenant/v1/test/mock_client.go | 5 -
proto/platform/tenant/v1/test/mock_records.go | 38 -
12 files changed, 1 insertion(+), 2150 deletions(-)
delete mode 100644 events/admission/admission.go
delete mode 100644 events/admission/namespace.go
delete mode 100644 events/policy/policy.go
delete mode 100644 proto/platform/tenant/v1/record.platform.pb.go
delete mode 100644 proto/platform/tenant/v1/record.platform.pb.gw.go
delete mode 100644 proto/platform/tenant/v1/record.platform.proto
delete mode 100644 proto/platform/tenant/v1/record.platform_grpc.pb.go
delete mode 100644 proto/platform/tenant/v1/test/mock_records.go
diff --git a/events/admission/admission.go b/events/admission/admission.go
deleted file mode 100644
index 5da13dcf..00000000
--- a/events/admission/admission.go
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package admission
-
-import (
- admissionv1 "k8s.io/api/admission/v1"
-)
-
-// ReviewEventType is the cloudevents event type when an admission controller
-// is invoked.
-const ReviewEventType = "dev.chainguard.admission.v1"
-
-// ReviewBody is the body of the Chainguard event Occurrence when the event type
-// is ReviewEventType.
-type ReviewBody admissionv1.AdmissionReview
diff --git a/events/admission/namespace.go b/events/admission/namespace.go
deleted file mode 100644
index 8e9f3eb0..00000000
--- a/events/admission/namespace.go
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package admission
-
-import (
- "chainguard.dev/sdk/uidp"
-)
-
-// NamespaceEventType is the cloudevents event type when a namespace's scope
-// changes to include or exclude a particular admission controller.
-const NamespaceEventType = "dev.chainguard.admission.namespace.v1"
-
-// Change is an enumeration of the types of changes we will emit events for.
-type Change string
-
-const (
- // CreatedChange is emitted the first time we see a resource
- CreatedChange Change = "created"
-
- // UpdatedChange is emitted when we see a resource change.
- UpdatedChange Change = "updated"
-)
-
-// EnforcerState is an enumeration of the possible states that the enforcer may
-// be in.
-type EnforcerState string
-
-const (
- // EnabledEnforcerState is emitted when enforcement is enabled.
- EnabledEnforcerState EnforcerState = "enabled"
-
- // DisabledEnforcerState is emitted when enforcement is disabled.
- DisabledEnforcerState EnforcerState = "disabled"
-)
-
-// NamespaceBody is the body of the Chainguard event Occurrence when the event
-// type is NamespaceEventType.
-type NamespaceBody struct {
- // Name is the name of the namespace as it appears within the user's cluster
- // e.g. kube-system
- Name string `json:"name"`
-
- // ID is the UIDP of the Namespace (whose parent is the Cluster UIDP)
- ID uidp.UIDP `json:"id"`
-
- // Change holds the type of change to the namespace we have observed.
- Change Change `json:"change"`
-
- // EnforcerState holds the state that policy enforcement is in for a
- // particular namespace.
- EnforcerState EnforcerState `json:"enforcer_state"`
-}
diff --git a/events/policy/policy.go b/events/policy/policy.go
deleted file mode 100644
index f1748aa6..00000000
--- a/events/policy/policy.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package policy
-
-import cloudevents "github.com/cloudevents/sdk-go/v2"
-
-// ChangedEventType is the cloudevents event type for validation state change for policy.
-const ChangedEventType = "dev.chainguard.policy.validation.changed.v1"
-
-const (
- // NewChange is for new policy state.
- NewChange = "new"
- // DegradedChange says the policy was passing and now is failing.
- DegradedChange = "degraded"
- // ImprovedChange says the policy was failing and now is passing.
- ImprovedChange = "improved"
-)
-
-// ImagePolicyRecord is policy states for an image in a cluster.
-type ImagePolicyRecord struct {
- // ClusterID identifies the specific cluster the Request pertains to.
- ClusterID string `json:"cluster_id,omitempty"`
- // ImageID that this ExistenceRecord belongs to.
- ImageID string `json:"image_id,omitempty"`
- // LastSeen is the last time we've seen this image_id anywhere on this cluster.
- LastSeen *cloudevents.Timestamp `json:"last_seen,omitempty"`
- // Policies are a map of policy name to policy state that apply to this image.
- Policies map[string]*State `json:"policies,omitempty"`
-}
-
-// State is the state of a policy and how it has changed.
-type State struct {
- // LastChecked is the time the information was last updated.
- LastChecked *cloudevents.Timestamp `json:"last_checked,omitempty"`
- // Valid is if the image passes the policy.
- Valid bool `json:"valid"`
- // Diagnostic holds any diagnostic messages surfaced during the evaluation
- // of this policy.
- Diagnostic string `json:"diagnostic,omitempty"`
- // Change is the kind of change we have seen for this image between checks.
- // Can be [Empty, "new", "degraded", "improved"]
- Change string `json:"change,omitempty"`
-}
diff --git a/go.mod b/go.mod
index f7736189..29aece63 100644
--- a/go.mod
+++ b/go.mod
@@ -23,7 +23,6 @@ require (
google.golang.org/grpc v1.62.1
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
google.golang.org/protobuf v1.33.0
- k8s.io/api v0.29.1
k8s.io/apimachinery v0.29.1
)
@@ -70,6 +69,7 @@ require (
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
+ k8s.io/api v0.29.1 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
knative.dev/pkg v0.0.0-20231101193506-b09d4f2a2845 // indirect
diff --git a/proto/platform/tenant/v1/clients.go b/proto/platform/tenant/v1/clients.go
index fbf13ea7..e3fc43d6 100644
--- a/proto/platform/tenant/v1/clients.go
+++ b/proto/platform/tenant/v1/clients.go
@@ -19,7 +19,6 @@ import (
)
type Clients interface {
- Records() RecordsClient
Sboms() SbomsClient
Signatures() SignaturesClient
VulnReports() VulnReportsClient
@@ -53,7 +52,6 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
}
return &clients{
- records: NewRecordsClient(conn),
sboms: NewSbomsClient(conn),
vulnReports: NewVulnReportsClient(conn),
signatures: NewSignaturesClient(conn),
@@ -64,7 +62,6 @@ func NewClients(ctx context.Context, addr string, token string) (Clients, error)
func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
return &clients{
- records: NewRecordsClient(conn),
sboms: NewSbomsClient(conn),
vulnReports: NewVulnReportsClient(conn),
signatures: NewSignaturesClient(conn),
@@ -73,8 +70,6 @@ func NewClientsFromConnection(conn *grpc.ClientConn) Clients {
}
type clients struct {
- records RecordsClient
-
sboms SbomsClient
signatures SignaturesClient
vulnReports VulnReportsClient
@@ -82,10 +77,6 @@ type clients struct {
conn *grpc.ClientConn
}
-func (c *clients) Records() RecordsClient {
- return c.records
-}
-
func (c *clients) Sboms() SbomsClient {
return c.sboms
}
diff --git a/proto/platform/tenant/v1/doc.go b/proto/platform/tenant/v1/doc.go
index fefa86c9..6a950653 100644
--- a/proto/platform/tenant/v1/doc.go
+++ b/proto/platform/tenant/v1/doc.go
@@ -7,7 +7,6 @@ SPDX-License-Identifier: Apache-2.0
// for implementing Tenant interactions for the Console.
//
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative signature.platform.proto
-//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. record.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. sbom.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. vuln.platform.proto
//go:generate protoc -I . -I ../.. -I ../../.. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative --grpc-gateway_out=. --grpc-gateway_opt logtostderr=true --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true --grpc-gateway_opt omit_package_doc=true --openapiv2_out=. attestation.platform.proto
diff --git a/proto/platform/tenant/v1/record.platform.pb.go b/proto/platform/tenant/v1/record.platform.pb.go
deleted file mode 100644
index fccce90c..00000000
--- a/proto/platform/tenant/v1/record.platform.pb.go
+++ /dev/null
@@ -1,1465 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v3.21.12
-// source: record.platform.proto
-
-package v1
-
-import (
- _ "chainguard.dev/sdk/proto/annotations"
- v1 "chainguard.dev/sdk/proto/platform/common/v1"
- _ "google.golang.org/genproto/googleapis/api/annotations"
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- timestamppb "google.golang.org/protobuf/types/known/timestamppb"
- reflect "reflect"
- sync "sync"
-)
-
-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)
-)
-
-type RecordStatus_Result int32
-
-const (
- RecordStatus_UNKNOWN RecordStatus_Result = 0
- RecordStatus_PASS RecordStatus_Result = 1
- RecordStatus_FAIL RecordStatus_Result = 2
-)
-
-// Enum value maps for RecordStatus_Result.
-var (
- RecordStatus_Result_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "PASS",
- 2: "FAIL",
- }
- RecordStatus_Result_value = map[string]int32{
- "UNKNOWN": 0,
- "PASS": 1,
- "FAIL": 2,
- }
-)
-
-func (x RecordStatus_Result) Enum() *RecordStatus_Result {
- p := new(RecordStatus_Result)
- *p = x
- return p
-}
-
-func (x RecordStatus_Result) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (RecordStatus_Result) Descriptor() protoreflect.EnumDescriptor {
- return file_record_platform_proto_enumTypes[0].Descriptor()
-}
-
-func (RecordStatus_Result) Type() protoreflect.EnumType {
- return &file_record_platform_proto_enumTypes[0]
-}
-
-func (x RecordStatus_Result) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use RecordStatus_Result.Descriptor instead.
-func (RecordStatus_Result) EnumDescriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{1, 0}
-}
-
-type Context_Ancestry_Role int32
-
-const (
- Context_Ancestry_UNKNOWN Context_Ancestry_Role = 0
- Context_Ancestry_BASE Context_Ancestry_Role = 1
- Context_Ancestry_DERIVED Context_Ancestry_Role = 2
-)
-
-// Enum value maps for Context_Ancestry_Role.
-var (
- Context_Ancestry_Role_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "BASE",
- 2: "DERIVED",
- }
- Context_Ancestry_Role_value = map[string]int32{
- "UNKNOWN": 0,
- "BASE": 1,
- "DERIVED": 2,
- }
-)
-
-func (x Context_Ancestry_Role) Enum() *Context_Ancestry_Role {
- p := new(Context_Ancestry_Role)
- *p = x
- return p
-}
-
-func (x Context_Ancestry_Role) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Context_Ancestry_Role) Descriptor() protoreflect.EnumDescriptor {
- return file_record_platform_proto_enumTypes[1].Descriptor()
-}
-
-func (Context_Ancestry_Role) Type() protoreflect.EnumType {
- return &file_record_platform_proto_enumTypes[1]
-}
-
-func (x Context_Ancestry_Role) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Context_Ancestry_Role.Descriptor instead.
-func (Context_Ancestry_Role) EnumDescriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2, 1, 0}
-}
-
-type Context_Variant_Role int32
-
-const (
- Context_Variant_UNKNOWN Context_Variant_Role = 0
- Context_Variant_INDEX Context_Variant_Role = 1
- Context_Variant_VARIANT Context_Variant_Role = 2
-)
-
-// Enum value maps for Context_Variant_Role.
-var (
- Context_Variant_Role_name = map[int32]string{
- 0: "UNKNOWN",
- 1: "INDEX",
- 2: "VARIANT",
- }
- Context_Variant_Role_value = map[string]int32{
- "UNKNOWN": 0,
- "INDEX": 1,
- "VARIANT": 2,
- }
-)
-
-func (x Context_Variant_Role) Enum() *Context_Variant_Role {
- p := new(Context_Variant_Role)
- *p = x
- return p
-}
-
-func (x Context_Variant_Role) String() string {
- return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Context_Variant_Role) Descriptor() protoreflect.EnumDescriptor {
- return file_record_platform_proto_enumTypes[2].Descriptor()
-}
-
-func (Context_Variant_Role) Type() protoreflect.EnumType {
- return &file_record_platform_proto_enumTypes[2]
-}
-
-func (x Context_Variant_Role) Number() protoreflect.EnumNumber {
- return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Context_Variant_Role.Descriptor instead.
-func (Context_Variant_Role) EnumDescriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2, 2, 0}
-}
-
-type Record struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id holds the UIDP for this image's record
- Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"`
- // cluster identifies the specific cluster for the record.
- Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // image is the container image for the record.
- Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
- // last_seen is the last time we've seen this image anywhere on this cluster.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // last_refreshed will hold a PredicateType => Last time it was successfully
- // refreshed.
- LastRefreshed map[string]*timestamppb.Timestamp `protobuf:"bytes,4,rep,name=last_refreshed,json=lastRefreshed,proto3" json:"last_refreshed,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- Sboms []*Sbom `protobuf:"bytes,6,rep,name=sboms,proto3" json:"sboms,omitempty"`
- // status is a map from analysis type (e.g. "sbom", "vuln") => RecordStatus to indidate success/failure,
- // the analysis timestamp, as well as any diagnostic message in case of failures.
- Status map[string]*RecordStatus `protobuf:"bytes,9,rep,name=status,proto3" json:"status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Record) Reset() {
- *x = Record{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Record) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Record) ProtoMessage() {}
-
-func (x *Record) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Record.ProtoReflect.Descriptor instead.
-func (*Record) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Record) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Record) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *Record) GetImage() string {
- if x != nil {
- return x.Image
- }
- return ""
-}
-
-func (x *Record) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (x *Record) GetLastRefreshed() map[string]*timestamppb.Timestamp {
- if x != nil {
- return x.LastRefreshed
- }
- return nil
-}
-
-func (x *Record) GetSboms() []*Sbom {
- if x != nil {
- return x.Sboms
- }
- return nil
-}
-
-func (x *Record) GetStatus() map[string]*RecordStatus {
- if x != nil {
- return x.Status
- }
- return nil
-}
-
-type RecordStatus struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- LastChecked *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
- Result RecordStatus_Result `protobuf:"varint,2,opt,name=result,proto3,enum=chainguard.platform.tenant.RecordStatus_Result" json:"result,omitempty"`
- Diagnostic string `protobuf:"bytes,3,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
-}
-
-func (x *RecordStatus) Reset() {
- *x = RecordStatus{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordStatus) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordStatus) ProtoMessage() {}
-
-func (x *RecordStatus) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordStatus.ProtoReflect.Descriptor instead.
-func (*RecordStatus) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RecordStatus) GetLastChecked() *timestamppb.Timestamp {
- if x != nil {
- return x.LastChecked
- }
- return nil
-}
-
-func (x *RecordStatus) GetResult() RecordStatus_Result {
- if x != nil {
- return x.Result
- }
- return RecordStatus_UNKNOWN
-}
-
-func (x *RecordStatus) GetDiagnostic() string {
- if x != nil {
- return x.Diagnostic
- }
- return ""
-}
-
-type Context struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // context_id is a unique ID, output only.
- ContextId string `protobuf:"bytes,1,opt,name=context_id,json=contextId,proto3" json:"context_id,omitempty"`
- // last_seen is the last time we've seen the image_id in this context.
- LastSeen *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
- // Types that are assignable to Context:
- //
- // *Context_Workload_
- // *Context_Ancestry_
- // *Context_Variant_
- Context isContext_Context `protobuf_oneof:"context"`
-}
-
-func (x *Context) Reset() {
- *x = Context{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Context) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Context) ProtoMessage() {}
-
-func (x *Context) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Context.ProtoReflect.Descriptor instead.
-func (*Context) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Context) GetContextId() string {
- if x != nil {
- return x.ContextId
- }
- return ""
-}
-
-func (x *Context) GetLastSeen() *timestamppb.Timestamp {
- if x != nil {
- return x.LastSeen
- }
- return nil
-}
-
-func (m *Context) GetContext() isContext_Context {
- if m != nil {
- return m.Context
- }
- return nil
-}
-
-func (x *Context) GetWorkload() *Context_Workload {
- if x, ok := x.GetContext().(*Context_Workload_); ok {
- return x.Workload
- }
- return nil
-}
-
-func (x *Context) GetAncestry() *Context_Ancestry {
- if x, ok := x.GetContext().(*Context_Ancestry_); ok {
- return x.Ancestry
- }
- return nil
-}
-
-func (x *Context) GetVariant() *Context_Variant {
- if x, ok := x.GetContext().(*Context_Variant_); ok {
- return x.Variant
- }
- return nil
-}
-
-type isContext_Context interface {
- isContext_Context()
-}
-
-type Context_Workload_ struct {
- Workload *Context_Workload `protobuf:"bytes,10,opt,name=workload,proto3,oneof"`
-}
-
-type Context_Ancestry_ struct {
- Ancestry *Context_Ancestry `protobuf:"bytes,11,opt,name=ancestry,proto3,oneof"`
-}
-
-type Context_Variant_ struct {
- Variant *Context_Variant `protobuf:"bytes,12,opt,name=variant,proto3,oneof"`
-}
-
-func (*Context_Workload_) isContext_Context() {}
-
-func (*Context_Ancestry_) isContext_Context() {}
-
-func (*Context_Variant_) isContext_Context() {}
-
-type Sbom struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"`
-}
-
-func (x *Sbom) Reset() {
- *x = Sbom{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Sbom) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sbom) ProtoMessage() {}
-
-func (x *Sbom) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sbom.ProtoReflect.Descriptor instead.
-func (*Sbom) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Sbom) GetPackages() []*Package {
- if x != nil {
- return x.Packages
- }
- return nil
-}
-
-type Package struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
- Purl string `protobuf:"bytes,3,opt,name=purl,proto3" json:"purl,omitempty"`
-}
-
-func (x *Package) Reset() {
- *x = Package{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Package) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Package) ProtoMessage() {}
-
-func (x *Package) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Package.ProtoReflect.Descriptor instead.
-func (*Package) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Package) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Package) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *Package) GetPurl() string {
- if x != nil {
- return x.Purl
- }
- return ""
-}
-
-type Policy struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // last_checked holds when this policy was last evaluated.
- LastChecked *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_checked,json=lastChecked,proto3" json:"last_checked,omitempty"`
- // valid holds whether the policy evaluation was successful.
- Valid bool `protobuf:"varint,2,opt,name=valid,proto3" json:"valid,omitempty"`
- // diagnostic holds any messages surfaced by the policy evaluation.
- Diagnostic string `protobuf:"bytes,3,opt,name=diagnostic,proto3" json:"diagnostic,omitempty"`
-}
-
-func (x *Policy) Reset() {
- *x = Policy{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Policy) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Policy) ProtoMessage() {}
-
-func (x *Policy) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
-func (*Policy) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Policy) GetLastChecked() *timestamppb.Timestamp {
- if x != nil {
- return x.LastChecked
- }
- return nil
-}
-
-func (x *Policy) GetValid() bool {
- if x != nil {
- return x.Valid
- }
- return false
-}
-
-func (x *Policy) GetDiagnostic() string {
- if x != nil {
- return x.Diagnostic
- }
- return ""
-}
-
-type RecordList struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Items []*Record `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-}
-
-func (x *RecordList) Reset() {
- *x = RecordList{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordList) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordList) ProtoMessage() {}
-
-func (x *RecordList) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordList.ProtoReflect.Descriptor instead.
-func (*RecordList) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *RecordList) GetItems() []*Record {
- if x != nil {
- return x.Items
- }
- return nil
-}
-
-type RecordFilter struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- // id is the exact UID of the record.
- Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
- // uidp filters records based on their position in the group hierarchy.
- Uidp *v1.UIDPFilter `protobuf:"bytes,6,opt,name=uidp,proto3" json:"uidp,omitempty"`
- // image is specified if a specific Record is desired.
- Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
- // predicate specifies to fetch Records where either there's no
- // LastRefreshed for this predicate type, or if it needs to be refreshed.
- Predicate string `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
- // cluster is specified if restricting to a given cluster id.
- // This field is required.
- Cluster string `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"`
- // active_since is the timestamp after which returned records should have been active.
- // This applies to when an image was "last seen".
- ActiveSince *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=active_since,json=activeSince,proto3" json:"active_since,omitempty"`
-}
-
-func (x *RecordFilter) Reset() {
- *x = RecordFilter{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RecordFilter) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RecordFilter) ProtoMessage() {}
-
-func (x *RecordFilter) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[7]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RecordFilter.ProtoReflect.Descriptor instead.
-func (*RecordFilter) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *RecordFilter) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *RecordFilter) GetUidp() *v1.UIDPFilter {
- if x != nil {
- return x.Uidp
- }
- return nil
-}
-
-func (x *RecordFilter) GetImage() string {
- if x != nil {
- return x.Image
- }
- return ""
-}
-
-func (x *RecordFilter) GetPredicate() string {
- if x != nil {
- return x.Predicate
- }
- return ""
-}
-
-func (x *RecordFilter) GetCluster() string {
- if x != nil {
- return x.Cluster
- }
- return ""
-}
-
-func (x *RecordFilter) GetActiveSince() *timestamppb.Timestamp {
- if x != nil {
- return x.ActiveSince
- }
- return nil
-}
-
-// TODO: Replace with upstream proto messages wherever possible.
-type GroupVersionKind struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
- Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
- Kind string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
-}
-
-func (x *GroupVersionKind) Reset() {
- *x = GroupVersionKind{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *GroupVersionKind) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GroupVersionKind) ProtoMessage() {}
-
-func (x *GroupVersionKind) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[8]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use GroupVersionKind.ProtoReflect.Descriptor instead.
-func (*GroupVersionKind) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *GroupVersionKind) GetGroup() string {
- if x != nil {
- return x.Group
- }
- return ""
-}
-
-func (x *GroupVersionKind) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-func (x *GroupVersionKind) GetKind() string {
- if x != nil {
- return x.Kind
- }
- return ""
-}
-
-// Workload contexts are added to existence records that have been
-// observed running on a cluster.
-type Context_Workload struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Kind *GroupVersionKind `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
- Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Uid string `protobuf:"bytes,4,opt,name=uid,proto3" json:"uid,omitempty"`
-}
-
-func (x *Context_Workload) Reset() {
- *x = Context_Workload{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[11]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Context_Workload) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Context_Workload) ProtoMessage() {}
-
-func (x *Context_Workload) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[11]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Context_Workload.ProtoReflect.Descriptor instead.
-func (*Context_Workload) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *Context_Workload) GetKind() *GroupVersionKind {
- if x != nil {
- return x.Kind
- }
- return nil
-}
-
-func (x *Context_Workload) GetNamespace() string {
- if x != nil {
- return x.Namespace
- }
- return ""
-}
-
-func (x *Context_Workload) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Context_Workload) GetUid() string {
- if x != nil {
- return x.Uid
- }
- return ""
-}
-
-// Ancestry relationships are added to records when a "base image"
-// relationship has been uncovered. This context is added to BOTH
-// records with their respective roles. The base image will get
-// the Role BASE, and the derivative image will get the Rile DERIVED.
-type Context_Ancestry struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Role Context_Ancestry_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.Context_Ancestry_Role" json:"role,omitempty"`
- // The id of the other image's record in this ancestry relationship.
- // If our Role is BASE, then this will hold the ID of the DERIVED
- // image's record, and vice versa.
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
-}
-
-func (x *Context_Ancestry) Reset() {
- *x = Context_Ancestry{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[12]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Context_Ancestry) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Context_Ancestry) ProtoMessage() {}
-
-func (x *Context_Ancestry) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[12]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Context_Ancestry.ProtoReflect.Descriptor instead.
-func (*Context_Ancestry) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2, 1}
-}
-
-func (x *Context_Ancestry) GetRole() Context_Ancestry_Role {
- if x != nil {
- return x.Role
- }
- return Context_Ancestry_UNKNOWN
-}
-
-func (x *Context_Ancestry) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-// Variant relationships are added to records when we find an "index"
-// containing multiple different variations (typically os/arch) of the
-// same logical image. These are referred to as "OCI Image Index",
-// "Docker Manifest List", and occasionally "fat images". This context
-// is added to ALL records including the INDEX and all VARIANTs of that
-// index. The INDEX will typically contain N contexts carrying the Role
-// INDEX, the id of the VARIANT's record, and the version information
-// that discriminates that VARIANT from other VARIANTs. The VARIANT
-// will typically (but not always!) contain 1 context varrying the Role
-// VARIANT, the id of the INDEX's record, and the version information
-// that discriminates it among the other VARIANTs in the INDEX.
-type Context_Variant struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Role Context_Variant_Role `protobuf:"varint,1,opt,name=role,proto3,enum=chainguard.platform.tenant.Context_Variant_Role" json:"role,omitempty"`
- // The id of the image index's record linking this
- // image (transitively) to the cluster.
- Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
- // The version information distinguishing this variant
- // from other possible variants of the index.
- Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
-}
-
-func (x *Context_Variant) Reset() {
- *x = Context_Variant{}
- if protoimpl.UnsafeEnabled {
- mi := &file_record_platform_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Context_Variant) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Context_Variant) ProtoMessage() {}
-
-func (x *Context_Variant) ProtoReflect() protoreflect.Message {
- mi := &file_record_platform_proto_msgTypes[13]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Context_Variant.ProtoReflect.Descriptor instead.
-func (*Context_Variant) Descriptor() ([]byte, []int) {
- return file_record_platform_proto_rawDescGZIP(), []int{2, 2}
-}
-
-func (x *Context_Variant) GetRole() Context_Variant_Role {
- if x != nil {
- return x.Role
- }
- return Context_Variant_UNKNOWN
-}
-
-func (x *Context_Variant) GetId() string {
- if x != nil {
- return x.Id
- }
- return ""
-}
-
-func (x *Context_Variant) GetVersion() string {
- if x != nil {
- return x.Version
- }
- return ""
-}
-
-var File_record_platform_proto protoreflect.FileDescriptor
-
-var file_record_platform_proto_rawDesc = []byte{
- 0x0a, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e,
- 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
- 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x1a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
- 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x75,
- 0x69, 0x64, 0x70, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0xae, 0x04, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a,
- 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61,
- 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x5c, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72,
- 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f,
- 0x72, 0x64, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65,
- 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x05, 0x73, 0x62, 0x6f, 0x6d, 0x73, 0x12, 0x46, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x1a, 0x5c, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72,
- 0x65, 0x73, 0x68, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
- 0x08, 0x10, 0x09, 0x22, 0xe1, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65,
- 0x63, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
- 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a,
- 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x22, 0x29, 0x0a, 0x06,
- 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
- 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a,
- 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x06, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
- 0x78, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x08, 0x77,
- 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73,
- 0x74, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41,
- 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73,
- 0x74, 0x72, 0x79, 0x12, 0x47, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x0c,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
- 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x1a, 0x90, 0x01, 0x0a,
- 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a,
- 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x1a,
- 0x8d, 0x01, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x04,
- 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e,
- 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72,
- 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
- 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x41, 0x53, 0x45,
- 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, 0x1a,
- 0xa6, 0x01, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x72,
- 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x04, 0x52,
- 0x6f, 0x6c, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
- 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56,
- 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x22, 0x47, 0x0a, 0x04, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x3f, 0x0a, 0x08, 0x70,
- 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x07,
- 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x22, 0x83, 0x01, 0x0a, 0x06, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65,
- 0x63, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x61,
- 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64,
- 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22,
- 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a,
- 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
- 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f,
- 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
- 0x75, 0x69, 0x64, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
- 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
- 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x69, 0x6e,
- 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x6e, 0x63,
- 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x32,
- 0xa1, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x04,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f,
- 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25,
- 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74,
- 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x72, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xdb,
- 0x04, 0x10, 0x01, 0x42, 0x72, 0x0a, 0x25, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x50, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x43, 0x6c, 0x75, 0x73,
- 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_record_platform_proto_rawDescOnce sync.Once
- file_record_platform_proto_rawDescData = file_record_platform_proto_rawDesc
-)
-
-func file_record_platform_proto_rawDescGZIP() []byte {
- file_record_platform_proto_rawDescOnce.Do(func() {
- file_record_platform_proto_rawDescData = protoimpl.X.CompressGZIP(file_record_platform_proto_rawDescData)
- })
- return file_record_platform_proto_rawDescData
-}
-
-var file_record_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_record_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
-var file_record_platform_proto_goTypes = []interface{}{
- (RecordStatus_Result)(0), // 0: chainguard.platform.tenant.RecordStatus.Result
- (Context_Ancestry_Role)(0), // 1: chainguard.platform.tenant.Context.Ancestry.Role
- (Context_Variant_Role)(0), // 2: chainguard.platform.tenant.Context.Variant.Role
- (*Record)(nil), // 3: chainguard.platform.tenant.Record
- (*RecordStatus)(nil), // 4: chainguard.platform.tenant.RecordStatus
- (*Context)(nil), // 5: chainguard.platform.tenant.Context
- (*Sbom)(nil), // 6: chainguard.platform.tenant.Sbom
- (*Package)(nil), // 7: chainguard.platform.tenant.Package
- (*Policy)(nil), // 8: chainguard.platform.tenant.Policy
- (*RecordList)(nil), // 9: chainguard.platform.tenant.RecordList
- (*RecordFilter)(nil), // 10: chainguard.platform.tenant.RecordFilter
- (*GroupVersionKind)(nil), // 11: chainguard.platform.tenant.GroupVersionKind
- nil, // 12: chainguard.platform.tenant.Record.LastRefreshedEntry
- nil, // 13: chainguard.platform.tenant.Record.StatusEntry
- (*Context_Workload)(nil), // 14: chainguard.platform.tenant.Context.Workload
- (*Context_Ancestry)(nil), // 15: chainguard.platform.tenant.Context.Ancestry
- (*Context_Variant)(nil), // 16: chainguard.platform.tenant.Context.Variant
- (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 18: chainguard.platform.common.UIDPFilter
-}
-var file_record_platform_proto_depIdxs = []int32{
- 17, // 0: chainguard.platform.tenant.Record.last_seen:type_name -> google.protobuf.Timestamp
- 12, // 1: chainguard.platform.tenant.Record.last_refreshed:type_name -> chainguard.platform.tenant.Record.LastRefreshedEntry
- 6, // 2: chainguard.platform.tenant.Record.sboms:type_name -> chainguard.platform.tenant.Sbom
- 13, // 3: chainguard.platform.tenant.Record.status:type_name -> chainguard.platform.tenant.Record.StatusEntry
- 17, // 4: chainguard.platform.tenant.RecordStatus.last_checked:type_name -> google.protobuf.Timestamp
- 0, // 5: chainguard.platform.tenant.RecordStatus.result:type_name -> chainguard.platform.tenant.RecordStatus.Result
- 17, // 6: chainguard.platform.tenant.Context.last_seen:type_name -> google.protobuf.Timestamp
- 14, // 7: chainguard.platform.tenant.Context.workload:type_name -> chainguard.platform.tenant.Context.Workload
- 15, // 8: chainguard.platform.tenant.Context.ancestry:type_name -> chainguard.platform.tenant.Context.Ancestry
- 16, // 9: chainguard.platform.tenant.Context.variant:type_name -> chainguard.platform.tenant.Context.Variant
- 7, // 10: chainguard.platform.tenant.Sbom.packages:type_name -> chainguard.platform.tenant.Package
- 17, // 11: chainguard.platform.tenant.Policy.last_checked:type_name -> google.protobuf.Timestamp
- 3, // 12: chainguard.platform.tenant.RecordList.items:type_name -> chainguard.platform.tenant.Record
- 18, // 13: chainguard.platform.tenant.RecordFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 17, // 14: chainguard.platform.tenant.RecordFilter.active_since:type_name -> google.protobuf.Timestamp
- 17, // 15: chainguard.platform.tenant.Record.LastRefreshedEntry.value:type_name -> google.protobuf.Timestamp
- 4, // 16: chainguard.platform.tenant.Record.StatusEntry.value:type_name -> chainguard.platform.tenant.RecordStatus
- 11, // 17: chainguard.platform.tenant.Context.Workload.kind:type_name -> chainguard.platform.tenant.GroupVersionKind
- 1, // 18: chainguard.platform.tenant.Context.Ancestry.role:type_name -> chainguard.platform.tenant.Context.Ancestry.Role
- 2, // 19: chainguard.platform.tenant.Context.Variant.role:type_name -> chainguard.platform.tenant.Context.Variant.Role
- 10, // 20: chainguard.platform.tenant.Records.List:input_type -> chainguard.platform.tenant.RecordFilter
- 9, // 21: chainguard.platform.tenant.Records.List:output_type -> chainguard.platform.tenant.RecordList
- 21, // [21:22] is the sub-list for method output_type
- 20, // [20:21] is the sub-list for method input_type
- 20, // [20:20] is the sub-list for extension type_name
- 20, // [20:20] is the sub-list for extension extendee
- 0, // [0:20] is the sub-list for field type_name
-}
-
-func init() { file_record_platform_proto_init() }
-func file_record_platform_proto_init() {
- if File_record_platform_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_record_platform_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Record); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordStatus); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Context); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Sbom); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Package); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Policy); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordList); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RecordFilter); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GroupVersionKind); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Context_Workload); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Context_Ancestry); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_record_platform_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Context_Variant); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_record_platform_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*Context_Workload_)(nil),
- (*Context_Ancestry_)(nil),
- (*Context_Variant_)(nil),
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_record_platform_proto_rawDesc,
- NumEnums: 3,
- NumMessages: 14,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_record_platform_proto_goTypes,
- DependencyIndexes: file_record_platform_proto_depIdxs,
- EnumInfos: file_record_platform_proto_enumTypes,
- MessageInfos: file_record_platform_proto_msgTypes,
- }.Build()
- File_record_platform_proto = out.File
- file_record_platform_proto_rawDesc = nil
- file_record_platform_proto_goTypes = nil
- file_record_platform_proto_depIdxs = nil
-}
diff --git a/proto/platform/tenant/v1/record.platform.pb.gw.go b/proto/platform/tenant/v1/record.platform.pb.gw.go
deleted file mode 100644
index 043b5665..00000000
--- a/proto/platform/tenant/v1/record.platform.pb.gw.go
+++ /dev/null
@@ -1,200 +0,0 @@
-// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
-// source: record.platform.proto
-
-package v1
-
-import (
- "context"
- "io"
- "net/http"
-
- "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
- "github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/grpclog"
- "google.golang.org/grpc/metadata"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/proto"
-)
-
-// Suppress "imported and not used" errors
-var _ codes.Code
-var _ io.Reader
-var _ status.Status
-var _ = runtime.String
-var _ = utilities.NewDoubleArray
-var _ = metadata.Join
-
-var (
- filter_Records_List_0 = &utilities.DoubleArray{Encoding: map[string]int{"cluster": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
-)
-
-func request_Records_List_0(ctx context.Context, marshaler runtime.Marshaler, client RecordsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RecordFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["cluster"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster")
- }
-
- protoReq.Cluster, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Records_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
- return msg, metadata, err
-
-}
-
-func local_request_Records_List_0(ctx context.Context, marshaler runtime.Marshaler, server RecordsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RecordFilter
- var metadata runtime.ServerMetadata
-
- var (
- val string
- ok bool
- err error
- _ = err
- )
-
- val, ok = pathParams["cluster"]
- if !ok {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster")
- }
-
- protoReq.Cluster, err = runtime.String(val)
- if err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster", err)
- }
-
- if err := req.ParseForm(); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
- if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Records_List_0); err != nil {
- return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
- }
-
- msg, err := server.List(ctx, &protoReq)
- return msg, metadata, err
-
-}
-
-// RegisterRecordsHandlerServer registers the http handlers for service Records to "mux".
-// UnaryRPC :call RecordsServer directly.
-// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
-// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRecordsHandlerFromEndpoint instead.
-func RegisterRecordsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RecordsServer) error {
-
- mux.Handle("GET", pattern_Records_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- var stream runtime.ServerTransportStream
- ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.tenant.Records/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{cluster}/records"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := local_request_Records_List_0(ctx, inboundMarshaler, server, req, pathParams)
- md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Records_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-// RegisterRecordsHandlerFromEndpoint is same as RegisterRecordsHandler but
-// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
-func RegisterRecordsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
- conn, err := grpc.Dial(endpoint, opts...)
- if err != nil {
- return err
- }
- defer func() {
- if err != nil {
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- return
- }
- go func() {
- <-ctx.Done()
- if cerr := conn.Close(); cerr != nil {
- grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
- }
- }()
- }()
-
- return RegisterRecordsHandler(ctx, mux, conn)
-}
-
-// RegisterRecordsHandler registers the http handlers for service Records to "mux".
-// The handlers forward requests to the grpc endpoint over "conn".
-func RegisterRecordsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- return RegisterRecordsHandlerClient(ctx, mux, NewRecordsClient(conn))
-}
-
-// RegisterRecordsHandlerClient registers the http handlers for service Records
-// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RecordsClient".
-// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RecordsClient"
-// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
-// "RecordsClient" to call the correct interceptors.
-func RegisterRecordsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RecordsClient) error {
-
- mux.Handle("GET", pattern_Records_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
- ctx, cancel := context.WithCancel(req.Context())
- defer cancel()
- inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- var err error
- ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.tenant.Records/List", runtime.WithHTTPPathPattern("/tenant/v1/clusters/{cluster}/records"))
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
- resp, md, err := request_Records_List_0(ctx, inboundMarshaler, client, req, pathParams)
- ctx = runtime.NewServerMetadataContext(ctx, md)
- if err != nil {
- runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
- return
- }
-
- forward_Records_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
-
- })
-
- return nil
-}
-
-var (
- pattern_Records_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"tenant", "v1", "clusters", "cluster", "records"}, ""))
-)
-
-var (
- forward_Records_List_0 = runtime.ForwardResponseMessage
-)
diff --git a/proto/platform/tenant/v1/record.platform.proto b/proto/platform/tenant/v1/record.platform.proto
deleted file mode 100644
index 81a0dbf7..00000000
--- a/proto/platform/tenant/v1/record.platform.proto
+++ /dev/null
@@ -1,203 +0,0 @@
-syntax = "proto3";
-
-option go_package = "chainguard.dev/sdk/proto/platform/tenant/v1";
-option java_multiple_files = true;
-option java_package = "dev.chainguard.sdk.platform.tenant.v1";
-option java_outer_classname = "PlatformTenantClusterProto";
-
-package chainguard.platform.tenant;
-
-import "google/api/annotations.proto";
-import "google/protobuf/timestamp.proto";
-import "annotations/auth.proto";
-import "platform/common/v1/uidp.platform.proto";
-
-service Records {
- rpc List(RecordFilter) returns (RecordList) {
- option (google.api.http) = {
- // TODO: I am not sure this inner cluster will work with our id. Gotta test.
- get: "/tenant/v1/clusters/{cluster}/records"
- };
- option (chainguard.annotations.iam) = {
- enabled: {
- capabilities: [CAP_TENANT_RECORDS_LIST]
- unscoped: true
- }
- };
- }
-}
-
-message Record {
- // id holds the UIDP for this image's record
- string id = 7;
-
- // cluster identifies the specific cluster for the record.
- string cluster = 1;
-
- // image is the container image for the record.
- string image = 2;
-
- // last_seen is the last time we've seen this image anywhere on this cluster.
- google.protobuf.Timestamp last_seen = 3;
-
- // last_refreshed will hold a PredicateType => Last time it was successfully
- // refreshed.
- map last_refreshed = 4;
-
- // This field was retired and is no longer served.
- reserved 5;
-
- repeated Sbom sboms = 6;
-
- // This field was retired and is no longer served.
- reserved 8;
-
- // status is a map from analysis type (e.g. "sbom", "vuln") => RecordStatus to indidate success/failure,
- // the analysis timestamp, as well as any diagnostic message in case of failures.
- map status = 9;
-}
-
-message RecordStatus {
- google.protobuf.Timestamp last_checked = 1;
- Result result = 2;
- string diagnostic = 3;
-
- enum Result {
- UNKNOWN = 0;
- PASS = 1;
- FAIL = 2;
- }
-}
-
-message Context {
- // context_id is a unique ID, output only.
- string context_id = 1;
-
- // last_seen is the last time we've seen the image_id in this context.
- google.protobuf.Timestamp last_seen = 2;
-
- oneof context {
- Workload workload = 10;
- Ancestry ancestry = 11;
- Variant variant = 12;
- }
-
- // Workload contexts are added to existence records that have been
- // observed running on a cluster.
- message Workload {
- GroupVersionKind kind = 1;
- string namespace = 2;
- string name = 3;
- string uid = 4;
- }
-
- // Ancestry relationships are added to records when a "base image"
- // relationship has been uncovered. This context is added to BOTH
- // records with their respective roles. The base image will get
- // the Role BASE, and the derivative image will get the Rile DERIVED.
- message Ancestry {
- Role role = 1;
-
- // The id of the other image's record in this ancestry relationship.
- // If our Role is BASE, then this will hold the ID of the DERIVED
- // image's record, and vice versa.
- string id = 2;
-
- enum Role {
- UNKNOWN = 0;
- BASE = 1;
- DERIVED = 2;
- }
- }
-
- // Variant relationships are added to records when we find an "index"
- // containing multiple different variations (typically os/arch) of the
- // same logical image. These are referred to as "OCI Image Index",
- // "Docker Manifest List", and occasionally "fat images". This context
- // is added to ALL records including the INDEX and all VARIANTs of that
- // index. The INDEX will typically contain N contexts carrying the Role
- // INDEX, the id of the VARIANT's record, and the version information
- // that discriminates that VARIANT from other VARIANTs. The VARIANT
- // will typically (but not always!) contain 1 context varrying the Role
- // VARIANT, the id of the INDEX's record, and the version information
- // that discriminates it among the other VARIANTs in the INDEX.
- message Variant {
- Role role = 1;
-
- // The id of the image index's record linking this
- // image (transitively) to the cluster.
- string id = 2;
-
- // The version information distinguishing this variant
- // from other possible variants of the index.
- string version = 3;
-
- enum Role {
- UNKNOWN = 0;
- INDEX = 1;
- VARIANT = 2;
- }
- }
-}
-
-message Sbom {
- repeated Package packages = 1;
-}
-
-message Package {
- string name = 1;
- string version = 2;
- string purl = 3;
-}
-
-message Policy {
- // last_checked holds when this policy was last evaluated.
- google.protobuf.Timestamp last_checked = 1;
-
- // valid holds whether the policy evaluation was successful.
- bool valid = 2;
-
- // diagnostic holds any messages surfaced by the policy evaluation.
- string diagnostic = 3;
-
- reserved 4;
-}
-
-message RecordList {
- repeated Record items = 1;
-}
-
-message RecordFilter {
- // id is the exact UID of the record.
- string id = 5;
-
- // uidp filters records based on their position in the group hierarchy.
- chainguard.platform.common.UIDPFilter uidp = 6;
-
- // image is specified if a specific Record is desired.
- string image = 1;
-
- // predicate specifies to fetch Records where either there's no
- // LastRefreshed for this predicate type, or if it needs to be refreshed.
- string predicate = 2;
-
- // cluster is specified if restricting to a given cluster id.
- // This field is required.
- string cluster = 3;
-
- // active_since is the timestamp after which returned records should have been active.
- // This applies to when an image was "last seen".
- google.protobuf.Timestamp active_since = 4;
-
- // This field was retired and is no longer served.
- reserved 7;
-
- // Next ID: 8
-}
-
-// TODO: Replace with upstream proto messages wherever possible.
-message GroupVersionKind {
- string group = 1;
- string version = 2;
- string kind = 3;
-}
diff --git a/proto/platform/tenant/v1/record.platform_grpc.pb.go b/proto/platform/tenant/v1/record.platform_grpc.pb.go
deleted file mode 100644
index d94b1499..00000000
--- a/proto/platform/tenant/v1/record.platform_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
-// source: record.platform.proto
-
-package v1
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Records_List_FullMethodName = "/chainguard.platform.tenant.Records/List"
-)
-
-// RecordsClient is the client API for Records service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RecordsClient interface {
- List(ctx context.Context, in *RecordFilter, opts ...grpc.CallOption) (*RecordList, error)
-}
-
-type recordsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRecordsClient(cc grpc.ClientConnInterface) RecordsClient {
- return &recordsClient{cc}
-}
-
-func (c *recordsClient) List(ctx context.Context, in *RecordFilter, opts ...grpc.CallOption) (*RecordList, error) {
- out := new(RecordList)
- err := c.cc.Invoke(ctx, Records_List_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RecordsServer is the server API for Records service.
-// All implementations must embed UnimplementedRecordsServer
-// for forward compatibility
-type RecordsServer interface {
- List(context.Context, *RecordFilter) (*RecordList, error)
- mustEmbedUnimplementedRecordsServer()
-}
-
-// UnimplementedRecordsServer must be embedded to have forward compatible implementations.
-type UnimplementedRecordsServer struct {
-}
-
-func (UnimplementedRecordsServer) List(context.Context, *RecordFilter) (*RecordList, error) {
- return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
-}
-func (UnimplementedRecordsServer) mustEmbedUnimplementedRecordsServer() {}
-
-// UnsafeRecordsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RecordsServer will
-// result in compilation errors.
-type UnsafeRecordsServer interface {
- mustEmbedUnimplementedRecordsServer()
-}
-
-func RegisterRecordsServer(s grpc.ServiceRegistrar, srv RecordsServer) {
- s.RegisterService(&Records_ServiceDesc, srv)
-}
-
-func _Records_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RecordFilter)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RecordsServer).List(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Records_List_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RecordsServer).List(ctx, req.(*RecordFilter))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Records_ServiceDesc is the grpc.ServiceDesc for Records service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Records_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "chainguard.platform.tenant.Records",
- HandlerType: (*RecordsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "List",
- Handler: _Records_List_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "record.platform.proto",
-}
diff --git a/proto/platform/tenant/v1/test/mock_client.go b/proto/platform/tenant/v1/test/mock_client.go
index 8c0ac6d6..d1777b69 100644
--- a/proto/platform/tenant/v1/test/mock_client.go
+++ b/proto/platform/tenant/v1/test/mock_client.go
@@ -12,7 +12,6 @@ import (
type MockTenantClient struct {
OnClose error
- RecordsClient MockRecordsClient
SbomsClient MockSbomsClient
SignaturesClient MockSignaturesClient
VulnReportsClient MockVulnReportsClient
@@ -21,10 +20,6 @@ type MockTenantClient struct {
var _ tenant.Clients = (*MockTenantClient)(nil)
-func (m MockTenantClient) Records() tenant.RecordsClient {
- return &m.RecordsClient
-}
-
func (m MockTenantClient) Sboms() tenant.SbomsClient {
return &m.SbomsClient
}
diff --git a/proto/platform/tenant/v1/test/mock_records.go b/proto/platform/tenant/v1/test/mock_records.go
deleted file mode 100644
index c2ae2a64..00000000
--- a/proto/platform/tenant/v1/test/mock_records.go
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2022 Chainguard, Inc.
-SPDX-License-Identifier: Apache-2.0
-*/
-
-package test
-
-import (
- "context"
- "fmt"
-
- "github.com/google/go-cmp/cmp"
- "google.golang.org/grpc"
- "google.golang.org/protobuf/testing/protocmp"
-
- tenant "chainguard.dev/sdk/proto/platform/tenant/v1"
-)
-
-var _ tenant.RecordsClient = (*MockRecordsClient)(nil)
-
-type MockRecordsClient struct {
- OnList []RecordsOnList
-}
-
-type RecordsOnList struct {
- Given *tenant.RecordFilter
- List *tenant.RecordList
- Error error
-}
-
-func (m MockRecordsClient) List(_ context.Context, given *tenant.RecordFilter, _ ...grpc.CallOption) (*tenant.RecordList, error) {
- for _, o := range m.OnList {
- if cmp.Equal(o.Given, given, protocmp.Transform()) {
- return o.List, o.Error
- }
- }
- return nil, fmt.Errorf("mock not found for %v", given)
-}
From f27d7e37f16565805d4d1d0af97627558d6b66f6 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Thu, 25 Apr 2024 09:51:56 -0700
Subject: [PATCH 29/41] Export 166b2dd07676ba1d5003763e4da015d83340a5d9
Export: 166b2dd07676ba1d5003763e4da015d83340a5d9
---
go.mod | 18 ++++++++----------
go.sum | 32 ++++++++++++++++----------------
2 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/go.mod b/go.mod
index 29aece63..01999ae3 100644
--- a/go.mod
+++ b/go.mod
@@ -17,10 +17,10 @@ require (
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/russross/blackfriday/v2 v2.1.0
go.uber.org/zap v1.27.0
- golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
+ golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
golang.org/x/oauth2 v0.19.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7
- google.golang.org/grpc v1.62.1
+ google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c
+ google.golang.org/grpc v1.63.2
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
google.golang.org/protobuf v1.33.0
k8s.io/apimachinery v0.29.1
@@ -37,7 +37,6 @@ require (
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/css v1.0.0 // indirect
@@ -53,19 +52,18 @@ require (
github.com/prometheus/common v0.51.1 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
- github.com/stretchr/testify v1.9.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
+ go.opentelemetry.io/otel v1.26.0 // indirect
+ go.opentelemetry.io/otel/metric v1.26.0 // indirect
+ go.opentelemetry.io/otel/trace v1.26.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
- golang.org/x/net v0.23.0 // indirect
+ golang.org/x/net v0.24.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.19.0 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index e0169a6c..3d01b98d 100644
--- a/go.sum
+++ b/go.sum
@@ -140,12 +140,12 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs=
+go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4=
+go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30=
+go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4=
+go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA=
+go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
@@ -167,8 +167,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w=
-golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=
+golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -192,8 +192,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
-golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
+golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
@@ -257,18 +257,18 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E=
-google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
-google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
+google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
+google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
From a7579575a1a3216bf5f019179b033ebbdc9dd6d1 Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Mon, 29 Apr 2024 13:16:25 -0400
Subject: [PATCH 30/41] Export d1c60e43b3b1086196d5d4bd8001182242bd8de4
Export: d1c60e43b3b1086196d5d4bd8001182242bd8de4
---
.../registry/v1/registry.platform.pb.go | 1301 +++++++++++------
.../registry/v1/registry.platform.pb.gw.go | 139 ++
.../registry/v1/registry.platform.proto | 51 +
.../registry/v1/registry.platform_grpc.pb.go | 37 +
proto/platform/registry/v1/test/registry.go | 16 +
5 files changed, 1088 insertions(+), 456 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 46cc6135..c7785e57 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -1171,6 +1171,125 @@ func (x *ChangedImageConfig) GetVolumes() *ChangedImageConfig_VolumeDiff {
return nil
}
+type ImageConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // User defines the username or UID which the process in the container should run as.
+ User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
+ ExposedPorts map[string]*ImageConfig_ExposedPort `protobuf:"bytes,2,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Env is a list of environment variables to be used in a container.
+ Env []string `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"`
+ // Entrypoint defines a list of arguments to use as the command to execute when the container starts.
+ Entrypoint []string `protobuf:"bytes,4,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"`
+ // Cmd defines the default arguments to the entrypoint of the container.
+ Cmd []string `protobuf:"bytes,5,rep,name=cmd,proto3" json:"cmd,omitempty"`
+ // Volumes is a set of directories describing where the process is likely write data specific to a container instance.
+ Volumes map[string]*ImageConfig_Volume `protobuf:"bytes,6,rep,name=volumes,proto3" json:"volumes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // WorkingDir sets the current working directory of the entrypoint process in the container.
+ WorkingDir string `protobuf:"bytes,7,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"`
+ // Labels contains arbitrary metadata for the container.
+ Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // StopSignal contains the system call signal that will be sent to the container to exit.
+ StopSignal string `protobuf:"bytes,9,opt,name=stop_signal,json=stopSignal,proto3" json:"stop_signal,omitempty"`
+}
+
+func (x *ImageConfig) Reset() {
+ *x = ImageConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImageConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageConfig) ProtoMessage() {}
+
+func (x *ImageConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[17]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageConfig.ProtoReflect.Descriptor instead.
+func (*ImageConfig) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *ImageConfig) GetUser() string {
+ if x != nil {
+ return x.User
+ }
+ return ""
+}
+
+func (x *ImageConfig) GetExposedPorts() map[string]*ImageConfig_ExposedPort {
+ if x != nil {
+ return x.ExposedPorts
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetEnv() []string {
+ if x != nil {
+ return x.Env
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetEntrypoint() []string {
+ if x != nil {
+ return x.Entrypoint
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetCmd() []string {
+ if x != nil {
+ return x.Cmd
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetVolumes() map[string]*ImageConfig_Volume {
+ if x != nil {
+ return x.Volumes
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetWorkingDir() string {
+ if x != nil {
+ return x.WorkingDir
+ }
+ return ""
+}
+
+func (x *ImageConfig) GetLabels() map[string]string {
+ if x != nil {
+ return x.Labels
+ }
+ return nil
+}
+
+func (x *ImageConfig) GetStopSignal() string {
+ if x != nil {
+ return x.StopSignal
+ }
+ return ""
+}
+
type PackagesDiff struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1184,7 +1303,7 @@ type PackagesDiff struct {
func (x *PackagesDiff) Reset() {
*x = PackagesDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[17]
+ mi := &file_registry_platform_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1197,7 +1316,7 @@ func (x *PackagesDiff) String() string {
func (*PackagesDiff) ProtoMessage() {}
func (x *PackagesDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[17]
+ mi := &file_registry_platform_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1210,7 +1329,7 @@ func (x *PackagesDiff) ProtoReflect() protoreflect.Message {
// Deprecated: Use PackagesDiff.ProtoReflect.Descriptor instead.
func (*PackagesDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{17}
+ return file_registry_platform_proto_rawDescGZIP(), []int{18}
}
func (x *PackagesDiff) GetAdded() []*PackageReference {
@@ -1246,7 +1365,7 @@ type VersionReference struct {
func (x *VersionReference) Reset() {
*x = VersionReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[18]
+ mi := &file_registry_platform_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1259,7 +1378,7 @@ func (x *VersionReference) String() string {
func (*VersionReference) ProtoMessage() {}
func (x *VersionReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[18]
+ mi := &file_registry_platform_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1272,7 +1391,7 @@ func (x *VersionReference) ProtoReflect() protoreflect.Message {
// Deprecated: Use VersionReference.ProtoReflect.Descriptor instead.
func (*VersionReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{18}
+ return file_registry_platform_proto_rawDescGZIP(), []int{19}
}
func (x *VersionReference) GetVersion() string {
@@ -1303,7 +1422,7 @@ type PackageReference struct {
func (x *PackageReference) Reset() {
*x = PackageReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[19]
+ mi := &file_registry_platform_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1316,7 +1435,7 @@ func (x *PackageReference) String() string {
func (*PackageReference) ProtoMessage() {}
func (x *PackageReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[19]
+ mi := &file_registry_platform_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1329,7 +1448,7 @@ func (x *PackageReference) ProtoReflect() protoreflect.Message {
// Deprecated: Use PackageReference.ProtoReflect.Descriptor instead.
func (*PackageReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{19}
+ return file_registry_platform_proto_rawDescGZIP(), []int{20}
}
func (x *PackageReference) GetName() string {
@@ -1366,7 +1485,7 @@ type VulnerabilitiesDiff struct {
func (x *VulnerabilitiesDiff) Reset() {
*x = VulnerabilitiesDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[20]
+ mi := &file_registry_platform_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1379,7 +1498,7 @@ func (x *VulnerabilitiesDiff) String() string {
func (*VulnerabilitiesDiff) ProtoMessage() {}
func (x *VulnerabilitiesDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[20]
+ mi := &file_registry_platform_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1392,7 +1511,7 @@ func (x *VulnerabilitiesDiff) ProtoReflect() protoreflect.Message {
// Deprecated: Use VulnerabilitiesDiff.ProtoReflect.Descriptor instead.
func (*VulnerabilitiesDiff) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{20}
+ return file_registry_platform_proto_rawDescGZIP(), []int{21}
}
func (x *VulnerabilitiesDiff) GetAdded() []*VulnerabilityReference {
@@ -1430,7 +1549,7 @@ type ScannerMetadata struct {
func (x *ScannerMetadata) Reset() {
*x = ScannerMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[21]
+ mi := &file_registry_platform_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1443,7 +1562,7 @@ func (x *ScannerMetadata) String() string {
func (*ScannerMetadata) ProtoMessage() {}
func (x *ScannerMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[21]
+ mi := &file_registry_platform_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1456,7 +1575,7 @@ func (x *ScannerMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use ScannerMetadata.ProtoReflect.Descriptor instead.
func (*ScannerMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{21}
+ return file_registry_platform_proto_rawDescGZIP(), []int{22}
}
func (x *ScannerMetadata) GetDigest() string {
@@ -1501,7 +1620,7 @@ type VulnerabilityReference struct {
func (x *VulnerabilityReference) Reset() {
*x = VulnerabilityReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[22]
+ mi := &file_registry_platform_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1514,7 +1633,7 @@ func (x *VulnerabilityReference) String() string {
func (*VulnerabilityReference) ProtoMessage() {}
func (x *VulnerabilityReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[22]
+ mi := &file_registry_platform_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1527,7 +1646,7 @@ func (x *VulnerabilityReference) ProtoReflect() protoreflect.Message {
// Deprecated: Use VulnerabilityReference.ProtoReflect.Descriptor instead.
func (*VulnerabilityReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{22}
+ return file_registry_platform_proto_rawDescGZIP(), []int{23}
}
func (x *VulnerabilityReference) GetId() string {
@@ -1566,7 +1685,7 @@ type DiffImageRequest struct {
func (x *DiffImageRequest) Reset() {
*x = DiffImageRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[23]
+ mi := &file_registry_platform_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1579,7 +1698,7 @@ func (x *DiffImageRequest) String() string {
func (*DiffImageRequest) ProtoMessage() {}
func (x *DiffImageRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[23]
+ mi := &file_registry_platform_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1592,7 +1711,7 @@ func (x *DiffImageRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DiffImageRequest.ProtoReflect.Descriptor instead.
func (*DiffImageRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{23}
+ return file_registry_platform_proto_rawDescGZIP(), []int{24}
}
func (x *DiffImageRequest) GetRepoId() string {
@@ -1630,7 +1749,7 @@ type SbomRequest struct {
func (x *SbomRequest) Reset() {
*x = SbomRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[24]
+ mi := &file_registry_platform_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1643,7 +1762,7 @@ func (x *SbomRequest) String() string {
func (*SbomRequest) ProtoMessage() {}
func (x *SbomRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[24]
+ mi := &file_registry_platform_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1656,7 +1775,7 @@ func (x *SbomRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SbomRequest.ProtoReflect.Descriptor instead.
func (*SbomRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{24}
+ return file_registry_platform_proto_rawDescGZIP(), []int{25}
}
func (x *SbomRequest) GetRepoId() string {
@@ -1673,6 +1792,72 @@ func (x *SbomRequest) GetDigest() string {
return ""
}
+type ImageConfigRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The UIDP of the image repo to get config for.
+ RepoId string `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"`
+ // The digest of the image to get config for.
+ Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
+ // The architecture to get config for.
+ Arch string `protobuf:"bytes,3,opt,name=arch,proto3" json:"arch,omitempty"`
+}
+
+func (x *ImageConfigRequest) Reset() {
+ *x = ImageConfigRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImageConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageConfigRequest) ProtoMessage() {}
+
+func (x *ImageConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageConfigRequest.ProtoReflect.Descriptor instead.
+func (*ImageConfigRequest) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *ImageConfigRequest) GetRepoId() string {
+ if x != nil {
+ return x.RepoId
+ }
+ return ""
+}
+
+func (x *ImageConfigRequest) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+func (x *ImageConfigRequest) GetArch() string {
+ if x != nil {
+ return x.Arch
+ }
+ return ""
+}
+
type VulnReportRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1687,7 +1872,7 @@ type VulnReportRequest struct {
func (x *VulnReportRequest) Reset() {
*x = VulnReportRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[25]
+ mi := &file_registry_platform_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1700,7 +1885,7 @@ func (x *VulnReportRequest) String() string {
func (*VulnReportRequest) ProtoMessage() {}
func (x *VulnReportRequest) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[25]
+ mi := &file_registry_platform_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1713,7 +1898,7 @@ func (x *VulnReportRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use VulnReportRequest.ProtoReflect.Descriptor instead.
func (*VulnReportRequest) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{25}
+ return file_registry_platform_proto_rawDescGZIP(), []int{27}
}
func (x *VulnReportRequest) GetRepoId() string {
@@ -1744,7 +1929,7 @@ type ManifestMetadataIndexFilter struct {
func (x *ManifestMetadataIndexFilter) Reset() {
*x = ManifestMetadataIndexFilter{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[26]
+ mi := &file_registry_platform_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1757,7 +1942,7 @@ func (x *ManifestMetadataIndexFilter) String() string {
func (*ManifestMetadataIndexFilter) ProtoMessage() {}
func (x *ManifestMetadataIndexFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[26]
+ mi := &file_registry_platform_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1770,7 +1955,7 @@ func (x *ManifestMetadataIndexFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use ManifestMetadataIndexFilter.ProtoReflect.Descriptor instead.
func (*ManifestMetadataIndexFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{26}
+ return file_registry_platform_proto_rawDescGZIP(), []int{28}
}
func (x *ManifestMetadataIndexFilter) GetDigest() string {
@@ -1802,7 +1987,7 @@ type ManifestMetadataFilterEntry struct {
func (x *ManifestMetadataFilterEntry) Reset() {
*x = ManifestMetadataFilterEntry{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[27]
+ mi := &file_registry_platform_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1815,7 +2000,7 @@ func (x *ManifestMetadataFilterEntry) String() string {
func (*ManifestMetadataFilterEntry) ProtoMessage() {}
func (x *ManifestMetadataFilterEntry) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[27]
+ mi := &file_registry_platform_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1828,7 +2013,7 @@ func (x *ManifestMetadataFilterEntry) ProtoReflect() protoreflect.Message {
// Deprecated: Use ManifestMetadataFilterEntry.ProtoReflect.Descriptor instead.
func (*ManifestMetadataFilterEntry) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{27}
+ return file_registry_platform_proto_rawDescGZIP(), []int{29}
}
func (m *ManifestMetadataFilterEntry) GetFilter() isManifestMetadataFilterEntry_Filter {
@@ -1885,7 +2070,7 @@ type ManifestMetadataFilter struct {
func (x *ManifestMetadataFilter) Reset() {
*x = ManifestMetadataFilter{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[28]
+ mi := &file_registry_platform_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1898,7 +2083,7 @@ func (x *ManifestMetadataFilter) String() string {
func (*ManifestMetadataFilter) ProtoMessage() {}
func (x *ManifestMetadataFilter) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[28]
+ mi := &file_registry_platform_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1911,7 +2096,7 @@ func (x *ManifestMetadataFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use ManifestMetadataFilter.ProtoReflect.Descriptor instead.
func (*ManifestMetadataFilter) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{28}
+ return file_registry_platform_proto_rawDescGZIP(), []int{30}
}
func (x *ManifestMetadataFilter) GetRepoId() string {
@@ -1948,7 +2133,7 @@ type PkgMetadata struct {
func (x *PkgMetadata) Reset() {
*x = PkgMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[29]
+ mi := &file_registry_platform_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1961,7 +2146,7 @@ func (x *PkgMetadata) String() string {
func (*PkgMetadata) ProtoMessage() {}
func (x *PkgMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[29]
+ mi := &file_registry_platform_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1974,7 +2159,7 @@ func (x *PkgMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use PkgMetadata.ProtoReflect.Descriptor instead.
func (*PkgMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{29}
+ return file_registry_platform_proto_rawDescGZIP(), []int{31}
}
func (x *PkgMetadata) GetPurl() string {
@@ -2026,7 +2211,7 @@ type ManifestMetadata struct {
func (x *ManifestMetadata) Reset() {
*x = ManifestMetadata{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[30]
+ mi := &file_registry_platform_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2039,7 +2224,7 @@ func (x *ManifestMetadata) String() string {
func (*ManifestMetadata) ProtoMessage() {}
func (x *ManifestMetadata) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[30]
+ mi := &file_registry_platform_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2052,7 +2237,7 @@ func (x *ManifestMetadata) ProtoReflect() protoreflect.Message {
// Deprecated: Use ManifestMetadata.ProtoReflect.Descriptor instead.
func (*ManifestMetadata) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{30}
+ return file_registry_platform_proto_rawDescGZIP(), []int{32}
}
func (x *ManifestMetadata) GetDigest() string {
@@ -2080,7 +2265,7 @@ type ManifestMetadataList struct {
func (x *ManifestMetadataList) Reset() {
*x = ManifestMetadataList{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[31]
+ mi := &file_registry_platform_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2093,7 +2278,7 @@ func (x *ManifestMetadataList) String() string {
func (*ManifestMetadataList) ProtoMessage() {}
func (x *ManifestMetadataList) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[31]
+ mi := &file_registry_platform_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2106,7 +2291,7 @@ func (x *ManifestMetadataList) ProtoReflect() protoreflect.Message {
// Deprecated: Use ManifestMetadataList.ProtoReflect.Descriptor instead.
func (*ManifestMetadataList) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{31}
+ return file_registry_platform_proto_rawDescGZIP(), []int{33}
}
func (x *ManifestMetadataList) GetItems() []*ManifestMetadata {
@@ -2128,7 +2313,7 @@ type ChangedImageConfig_ChangedUser struct {
func (x *ChangedImageConfig_ChangedUser) Reset() {
*x = ChangedImageConfig_ChangedUser{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[32]
+ mi := &file_registry_platform_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2141,7 +2326,7 @@ func (x *ChangedImageConfig_ChangedUser) String() string {
func (*ChangedImageConfig_ChangedUser) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedUser) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[32]
+ mi := &file_registry_platform_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2183,7 +2368,7 @@ type ChangedImageConfig_ChangedWorkingDir struct {
func (x *ChangedImageConfig_ChangedWorkingDir) Reset() {
*x = ChangedImageConfig_ChangedWorkingDir{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[33]
+ mi := &file_registry_platform_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2196,7 +2381,7 @@ func (x *ChangedImageConfig_ChangedWorkingDir) String() string {
func (*ChangedImageConfig_ChangedWorkingDir) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedWorkingDir) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[33]
+ mi := &file_registry_platform_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2238,7 +2423,7 @@ type ChangedImageConfig_EntrypointDiff struct {
func (x *ChangedImageConfig_EntrypointDiff) Reset() {
*x = ChangedImageConfig_EntrypointDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[34]
+ mi := &file_registry_platform_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2251,7 +2436,7 @@ func (x *ChangedImageConfig_EntrypointDiff) String() string {
func (*ChangedImageConfig_EntrypointDiff) ProtoMessage() {}
func (x *ChangedImageConfig_EntrypointDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[34]
+ mi := &file_registry_platform_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2293,7 +2478,7 @@ type ChangedImageConfig_EnvDiff struct {
func (x *ChangedImageConfig_EnvDiff) Reset() {
*x = ChangedImageConfig_EnvDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[35]
+ mi := &file_registry_platform_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2306,7 +2491,7 @@ func (x *ChangedImageConfig_EnvDiff) String() string {
func (*ChangedImageConfig_EnvDiff) ProtoMessage() {}
func (x *ChangedImageConfig_EnvDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[35]
+ mi := &file_registry_platform_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2348,7 +2533,7 @@ type ChangedImageConfig_CmdDiff struct {
func (x *ChangedImageConfig_CmdDiff) Reset() {
*x = ChangedImageConfig_CmdDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[36]
+ mi := &file_registry_platform_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2361,7 +2546,7 @@ func (x *ChangedImageConfig_CmdDiff) String() string {
func (*ChangedImageConfig_CmdDiff) ProtoMessage() {}
func (x *ChangedImageConfig_CmdDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[36]
+ mi := &file_registry_platform_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2403,7 +2588,7 @@ type ChangedImageConfig_ChangedStopSignal struct {
func (x *ChangedImageConfig_ChangedStopSignal) Reset() {
*x = ChangedImageConfig_ChangedStopSignal{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[37]
+ mi := &file_registry_platform_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2416,7 +2601,7 @@ func (x *ChangedImageConfig_ChangedStopSignal) String() string {
func (*ChangedImageConfig_ChangedStopSignal) ProtoMessage() {}
func (x *ChangedImageConfig_ChangedStopSignal) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[37]
+ mi := &file_registry_platform_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2455,7 +2640,7 @@ type ChangedImageConfig_Volume struct {
func (x *ChangedImageConfig_Volume) Reset() {
*x = ChangedImageConfig_Volume{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[38]
+ mi := &file_registry_platform_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2468,7 +2653,7 @@ func (x *ChangedImageConfig_Volume) String() string {
func (*ChangedImageConfig_Volume) ProtoMessage() {}
func (x *ChangedImageConfig_Volume) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[38]
+ mi := &file_registry_platform_proto_msgTypes[40]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2496,7 +2681,7 @@ type ChangedImageConfig_VolumeDiff struct {
func (x *ChangedImageConfig_VolumeDiff) Reset() {
*x = ChangedImageConfig_VolumeDiff{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[39]
+ mi := &file_registry_platform_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2509,7 +2694,7 @@ func (x *ChangedImageConfig_VolumeDiff) String() string {
func (*ChangedImageConfig_VolumeDiff) ProtoMessage() {}
func (x *ChangedImageConfig_VolumeDiff) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[39]
+ mi := &file_registry_platform_proto_msgTypes[41]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2539,6 +2724,83 @@ func (x *ChangedImageConfig_VolumeDiff) GetRemoved() map[string]*ChangedImageCon
return nil
}
+// ExposedPorts a set of ports to expose from a container running this image.
+type ImageConfig_ExposedPort struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ImageConfig_ExposedPort) Reset() {
+ *x = ImageConfig_ExposedPort{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImageConfig_ExposedPort) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageConfig_ExposedPort) ProtoMessage() {}
+
+func (x *ImageConfig_ExposedPort) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[44]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageConfig_ExposedPort.ProtoReflect.Descriptor instead.
+func (*ImageConfig_ExposedPort) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{17, 0}
+}
+
+type ImageConfig_Volume struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *ImageConfig_Volume) Reset() {
+ *x = ImageConfig_Volume{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_registry_platform_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ImageConfig_Volume) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageConfig_Volume) ProtoMessage() {}
+
+func (x *ImageConfig_Volume) ProtoReflect() protoreflect.Message {
+ mi := &file_registry_platform_proto_msgTypes[46]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageConfig_Volume.ProtoReflect.Descriptor instead.
+func (*ImageConfig_Volume) Descriptor() ([]byte, []int) {
+ return file_registry_platform_proto_rawDescGZIP(), []int{17, 2}
+}
+
type PackagesDiff_ChangedPackageReference struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2552,7 +2814,7 @@ type PackagesDiff_ChangedPackageReference struct {
func (x *PackagesDiff_ChangedPackageReference) Reset() {
*x = PackagesDiff_ChangedPackageReference{}
if protoimpl.UnsafeEnabled {
- mi := &file_registry_platform_proto_msgTypes[42]
+ mi := &file_registry_platform_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2565,7 +2827,7 @@ func (x *PackagesDiff_ChangedPackageReference) String() string {
func (*PackagesDiff_ChangedPackageReference) ProtoMessage() {}
func (x *PackagesDiff_ChangedPackageReference) ProtoReflect() protoreflect.Message {
- mi := &file_registry_platform_proto_msgTypes[42]
+ mi := &file_registry_platform_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2578,7 +2840,7 @@ func (x *PackagesDiff_ChangedPackageReference) ProtoReflect() protoreflect.Messa
// Deprecated: Use PackagesDiff_ChangedPackageReference.ProtoReflect.Descriptor instead.
func (*PackagesDiff_ChangedPackageReference) Descriptor() ([]byte, []int) {
- return file_registry_platform_proto_rawDescGZIP(), []int{17, 0}
+ return file_registry_platform_proto_rawDescGZIP(), []int{18, 0}
}
func (x *PackagesDiff_ChangedPackageReference) GetName() string {
@@ -2850,287 +3112,352 @@ var file_registry_platform_proto_rawDesc = []byte{
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c,
- 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05,
- 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64,
- 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63,
- 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72,
- 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
+ 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
+ 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
- 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
- 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10,
- 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
- 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a,
- 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
- 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
- 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
+ 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
+ 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
+ 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
+ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
+ 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
+ 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+ 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
+ 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f,
- 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e,
- 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74,
- 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73,
- 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f,
- 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73,
- 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76,
- 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76,
- 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2,
- 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72,
- 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74,
- 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
- 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49,
- 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e,
- 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48,
- 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08,
- 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e,
- 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65,
- 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69,
- 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
- 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f,
- 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74,
- 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
- 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
- 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c,
- 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
+ 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70,
- 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
- 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61,
- 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
- 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c,
- 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07,
- 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x32, 0x9b, 0x13, 0x0a, 0x08, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01,
- 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63,
+ 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
+ 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
+ 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
+ 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
+ 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
+ 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
+ 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
+ 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
+ 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
+ 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
+ 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
+ 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
+ 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
+ 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
+ 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
+ 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
+ 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a,
- 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a,
- 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61,
+ 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
+ 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
+ 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
+ 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
+ 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
+ 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f,
- 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
- 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
- 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61,
- 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e,
- 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
- 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12,
- 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54,
- 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a,
- 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
+ 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
+ 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
+ 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54,
- 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
- 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64,
- 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c,
- 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67,
- 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
- 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73,
- 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c,
- 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
+ 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
+ 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
+ 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
+ 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
+ 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26,
- 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
- 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06,
- 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62,
- 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32,
- 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f,
- 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
+ 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
+ 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
+ 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
@@ -3179,7 +3506,7 @@ func file_registry_platform_proto_rawDescGZIP() []byte {
}
var file_registry_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 43)
+var file_registry_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_registry_platform_proto_goTypes = []interface{}{
(CatalogTier)(0), // 0: chainguard.platform.registry.CatalogTier
(*Repo)(nil), // 1: chainguard.platform.registry.Repo
@@ -3199,116 +3526,130 @@ var file_registry_platform_proto_goTypes = []interface{}{
(*DiffImageResponse)(nil), // 15: chainguard.platform.registry.DiffImageResponse
(*ImageConfigDiff)(nil), // 16: chainguard.platform.registry.ImageConfigDiff
(*ChangedImageConfig)(nil), // 17: chainguard.platform.registry.ChangedImageConfig
- (*PackagesDiff)(nil), // 18: chainguard.platform.registry.PackagesDiff
- (*VersionReference)(nil), // 19: chainguard.platform.registry.VersionReference
- (*PackageReference)(nil), // 20: chainguard.platform.registry.PackageReference
- (*VulnerabilitiesDiff)(nil), // 21: chainguard.platform.registry.VulnerabilitiesDiff
- (*ScannerMetadata)(nil), // 22: chainguard.platform.registry.ScannerMetadata
- (*VulnerabilityReference)(nil), // 23: chainguard.platform.registry.VulnerabilityReference
- (*DiffImageRequest)(nil), // 24: chainguard.platform.registry.DiffImageRequest
- (*SbomRequest)(nil), // 25: chainguard.platform.registry.SbomRequest
- (*VulnReportRequest)(nil), // 26: chainguard.platform.registry.VulnReportRequest
- (*ManifestMetadataIndexFilter)(nil), // 27: chainguard.platform.registry.ManifestMetadataIndexFilter
- (*ManifestMetadataFilterEntry)(nil), // 28: chainguard.platform.registry.ManifestMetadataFilterEntry
- (*ManifestMetadataFilter)(nil), // 29: chainguard.platform.registry.ManifestMetadataFilter
- (*PkgMetadata)(nil), // 30: chainguard.platform.registry.PkgMetadata
- (*ManifestMetadata)(nil), // 31: chainguard.platform.registry.ManifestMetadata
- (*ManifestMetadataList)(nil), // 32: chainguard.platform.registry.ManifestMetadataList
- (*ChangedImageConfig_ChangedUser)(nil), // 33: chainguard.platform.registry.ChangedImageConfig.ChangedUser
- (*ChangedImageConfig_ChangedWorkingDir)(nil), // 34: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- (*ChangedImageConfig_EntrypointDiff)(nil), // 35: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- (*ChangedImageConfig_EnvDiff)(nil), // 36: chainguard.platform.registry.ChangedImageConfig.EnvDiff
- (*ChangedImageConfig_CmdDiff)(nil), // 37: chainguard.platform.registry.ChangedImageConfig.CmdDiff
- (*ChangedImageConfig_ChangedStopSignal)(nil), // 38: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- (*ChangedImageConfig_Volume)(nil), // 39: chainguard.platform.registry.ChangedImageConfig.Volume
- (*ChangedImageConfig_VolumeDiff)(nil), // 40: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- nil, // 41: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- nil, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- (*PackagesDiff_ChangedPackageReference)(nil), // 43: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*v1.UIDPFilter)(nil), // 44: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp
- (*v11.Scanner)(nil), // 46: chainguard.platform.tenant.Scanner
- (*emptypb.Empty)(nil), // 47: google.protobuf.Empty
- (*v11.Sbom2)(nil), // 48: chainguard.platform.tenant.Sbom2
- (*v11.VulnReport)(nil), // 49: chainguard.platform.tenant.VulnReport
+ (*ImageConfig)(nil), // 18: chainguard.platform.registry.ImageConfig
+ (*PackagesDiff)(nil), // 19: chainguard.platform.registry.PackagesDiff
+ (*VersionReference)(nil), // 20: chainguard.platform.registry.VersionReference
+ (*PackageReference)(nil), // 21: chainguard.platform.registry.PackageReference
+ (*VulnerabilitiesDiff)(nil), // 22: chainguard.platform.registry.VulnerabilitiesDiff
+ (*ScannerMetadata)(nil), // 23: chainguard.platform.registry.ScannerMetadata
+ (*VulnerabilityReference)(nil), // 24: chainguard.platform.registry.VulnerabilityReference
+ (*DiffImageRequest)(nil), // 25: chainguard.platform.registry.DiffImageRequest
+ (*SbomRequest)(nil), // 26: chainguard.platform.registry.SbomRequest
+ (*ImageConfigRequest)(nil), // 27: chainguard.platform.registry.ImageConfigRequest
+ (*VulnReportRequest)(nil), // 28: chainguard.platform.registry.VulnReportRequest
+ (*ManifestMetadataIndexFilter)(nil), // 29: chainguard.platform.registry.ManifestMetadataIndexFilter
+ (*ManifestMetadataFilterEntry)(nil), // 30: chainguard.platform.registry.ManifestMetadataFilterEntry
+ (*ManifestMetadataFilter)(nil), // 31: chainguard.platform.registry.ManifestMetadataFilter
+ (*PkgMetadata)(nil), // 32: chainguard.platform.registry.PkgMetadata
+ (*ManifestMetadata)(nil), // 33: chainguard.platform.registry.ManifestMetadata
+ (*ManifestMetadataList)(nil), // 34: chainguard.platform.registry.ManifestMetadataList
+ (*ChangedImageConfig_ChangedUser)(nil), // 35: chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ (*ChangedImageConfig_ChangedWorkingDir)(nil), // 36: chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ (*ChangedImageConfig_EntrypointDiff)(nil), // 37: chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ (*ChangedImageConfig_EnvDiff)(nil), // 38: chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ (*ChangedImageConfig_CmdDiff)(nil), // 39: chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ (*ChangedImageConfig_ChangedStopSignal)(nil), // 40: chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ (*ChangedImageConfig_Volume)(nil), // 41: chainguard.platform.registry.ChangedImageConfig.Volume
+ (*ChangedImageConfig_VolumeDiff)(nil), // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ nil, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ nil, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ (*ImageConfig_ExposedPort)(nil), // 45: chainguard.platform.registry.ImageConfig.ExposedPort
+ nil, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ (*ImageConfig_Volume)(nil), // 47: chainguard.platform.registry.ImageConfig.Volume
+ nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
+ nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
+ (*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
+ (*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
+ (*emptypb.Empty)(nil), // 54: google.protobuf.Empty
+ (*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
+ (*v11.VulnReport)(nil), // 56: chainguard.platform.tenant.VulnReport
}
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 44, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 45, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 44, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 45, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 45, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 45, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 45, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 18, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 21, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 33, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 34, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 35, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 36, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 37, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 38, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 40, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 20, // 25: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 20, // 26: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 43, // 27: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 23, // 28: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 29: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 22, // 30: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 46, // 31: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 45, // 32: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 27, // 33: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 28, // 34: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 45, // 35: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 45, // 36: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 30, // 37: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 31, // 38: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 41, // 39: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 42, // 40: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 39, // 41: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 39, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 19, // 43: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 19, // 44: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 45: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 46: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 47: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 48: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 49: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 50: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 51: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 52: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 53: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 24, // 54: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 25, // 55: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 26, // 56: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 29, // 57: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 58: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 59: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 60: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 47, // 61: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 62: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 63: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 47, // 64: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 65: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 66: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 67: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 48, // 68: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 49, // 69: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 32, // 70: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 58, // [58:71] is the sub-list for method output_type
- 45, // [45:58] is the sub-list for method input_type
- 45, // [45:45] is the sub-list for extension type_name
- 45, // [45:45] is the sub-list for extension extendee
- 0, // [0:45] is the sub-list for field type_name
+ 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 64, // [64:78] is the sub-list for method output_type
+ 50, // [50:64] is the sub-list for method input_type
+ 50, // [50:50] is the sub-list for extension type_name
+ 50, // [50:50] is the sub-list for extension extendee
+ 0, // [0:50] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
@@ -3522,7 +3863,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PackagesDiff); i {
+ switch v := v.(*ImageConfig); i {
case 0:
return &v.state
case 1:
@@ -3534,7 +3875,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VersionReference); i {
+ switch v := v.(*PackagesDiff); i {
case 0:
return &v.state
case 1:
@@ -3546,7 +3887,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PackageReference); i {
+ switch v := v.(*VersionReference); i {
case 0:
return &v.state
case 1:
@@ -3558,7 +3899,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilitiesDiff); i {
+ switch v := v.(*PackageReference); i {
case 0:
return &v.state
case 1:
@@ -3570,7 +3911,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ScannerMetadata); i {
+ switch v := v.(*VulnerabilitiesDiff); i {
case 0:
return &v.state
case 1:
@@ -3582,7 +3923,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnerabilityReference); i {
+ switch v := v.(*ScannerMetadata); i {
case 0:
return &v.state
case 1:
@@ -3594,7 +3935,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DiffImageRequest); i {
+ switch v := v.(*VulnerabilityReference); i {
case 0:
return &v.state
case 1:
@@ -3606,7 +3947,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SbomRequest); i {
+ switch v := v.(*DiffImageRequest); i {
case 0:
return &v.state
case 1:
@@ -3618,7 +3959,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VulnReportRequest); i {
+ switch v := v.(*SbomRequest); i {
case 0:
return &v.state
case 1:
@@ -3630,7 +3971,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataIndexFilter); i {
+ switch v := v.(*ImageConfigRequest); i {
case 0:
return &v.state
case 1:
@@ -3642,7 +3983,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataFilterEntry); i {
+ switch v := v.(*VulnReportRequest); i {
case 0:
return &v.state
case 1:
@@ -3654,7 +3995,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataFilter); i {
+ switch v := v.(*ManifestMetadataIndexFilter); i {
case 0:
return &v.state
case 1:
@@ -3666,7 +4007,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PkgMetadata); i {
+ switch v := v.(*ManifestMetadataFilterEntry); i {
case 0:
return &v.state
case 1:
@@ -3678,7 +4019,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadata); i {
+ switch v := v.(*ManifestMetadataFilter); i {
case 0:
return &v.state
case 1:
@@ -3690,7 +4031,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ManifestMetadataList); i {
+ switch v := v.(*PkgMetadata); i {
case 0:
return &v.state
case 1:
@@ -3702,7 +4043,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedUser); i {
+ switch v := v.(*ManifestMetadata); i {
case 0:
return &v.state
case 1:
@@ -3714,7 +4055,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
+ switch v := v.(*ManifestMetadataList); i {
case 0:
return &v.state
case 1:
@@ -3726,7 +4067,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
+ switch v := v.(*ChangedImageConfig_ChangedUser); i {
case 0:
return &v.state
case 1:
@@ -3738,7 +4079,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_EnvDiff); i {
+ switch v := v.(*ChangedImageConfig_ChangedWorkingDir); i {
case 0:
return &v.state
case 1:
@@ -3750,7 +4091,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_CmdDiff); i {
+ switch v := v.(*ChangedImageConfig_EntrypointDiff); i {
case 0:
return &v.state
case 1:
@@ -3762,7 +4103,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
+ switch v := v.(*ChangedImageConfig_EnvDiff); i {
case 0:
return &v.state
case 1:
@@ -3774,7 +4115,7 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ChangedImageConfig_Volume); i {
+ switch v := v.(*ChangedImageConfig_CmdDiff); i {
case 0:
return &v.state
case 1:
@@ -3786,6 +4127,30 @@ func file_registry_platform_proto_init() {
}
}
file_registry_platform_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_ChangedStopSignal); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ChangedImageConfig_Volume); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChangedImageConfig_VolumeDiff); i {
case 0:
return &v.state
@@ -3797,7 +4162,31 @@ func file_registry_platform_proto_init() {
return nil
}
}
- file_registry_platform_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ file_registry_platform_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImageConfig_ExposedPort); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ImageConfig_Volume); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_registry_platform_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PackagesDiff_ChangedPackageReference); i {
case 0:
return &v.state
@@ -3810,7 +4199,7 @@ func file_registry_platform_proto_init() {
}
}
}
- file_registry_platform_proto_msgTypes[27].OneofWrappers = []interface{}{
+ file_registry_platform_proto_msgTypes[29].OneofWrappers = []interface{}{
(*ManifestMetadataFilterEntry_ImageDigest)(nil),
(*ManifestMetadataFilterEntry_IndexFilter)(nil),
}
@@ -3820,7 +4209,7 @@ func file_registry_platform_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_registry_platform_proto_rawDesc,
NumEnums: 1,
- NumMessages: 43,
+ NumMessages: 50,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/proto/platform/registry/v1/registry.platform.pb.gw.go b/proto/platform/registry/v1/registry.platform.pb.gw.go
index 190731c4..612df8bf 100644
--- a/proto/platform/registry/v1/registry.platform.pb.gw.go
+++ b/proto/platform/registry/v1/registry.platform.pb.gw.go
@@ -686,6 +686,96 @@ func local_request_Registry_GetSbom_0(ctx context.Context, marshaler runtime.Mar
}
+var (
+ filter_Registry_GetImageConfig_0 = &utilities.DoubleArray{Encoding: map[string]int{"repo_id": 0, "digest": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
+)
+
+func request_Registry_GetImageConfig_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ImageConfigRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_GetImageConfig_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.GetImageConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func local_request_Registry_GetImageConfig_0(ctx context.Context, marshaler runtime.Marshaler, server RegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq ImageConfigRequest
+ var metadata runtime.ServerMetadata
+
+ var (
+ val string
+ ok bool
+ err error
+ _ = err
+ )
+
+ val, ok = pathParams["repo_id"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repo_id")
+ }
+
+ protoReq.RepoId, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repo_id", err)
+ }
+
+ val, ok = pathParams["digest"]
+ if !ok {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "digest")
+ }
+
+ protoReq.Digest, err = runtime.String(val)
+ if err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "digest", err)
+ }
+
+ if err := req.ParseForm(); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+ if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Registry_GetImageConfig_0); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := server.GetImageConfig(ctx, &protoReq)
+ return msg, metadata, err
+
+}
+
func request_Registry_GetVulnReport_0(ctx context.Context, marshaler runtime.Marshaler, client RegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq VulnReportRequest
var metadata runtime.ServerMetadata
@@ -1098,6 +1188,30 @@ func RegisterRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMux, s
})
+ mux.Handle("GET", pattern_Registry_GetImageConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ var stream runtime.ServerTransportStream
+ ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetImageConfig", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := local_request_Registry_GetImageConfig_0(ctx, inboundMarshaler, server, req, pathParams)
+ md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetImageConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -1418,6 +1532,27 @@ func RegisterRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMux, c
})
+ mux.Handle("GET", pattern_Registry_GetImageConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(req.Context())
+ defer cancel()
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ var err error
+ ctx, err = runtime.AnnotateContext(ctx, mux, req, "/chainguard.platform.registry.Registry/GetImageConfig", runtime.WithHTTPPathPattern("/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"))
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Registry_GetImageConfig_0(ctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Registry_GetImageConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
mux.Handle("GET", pattern_Registry_GetVulnReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -1486,6 +1621,8 @@ var (
pattern_Registry_GetSbom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "sbom"}, ""))
+ pattern_Registry_GetImageConfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "imageconfig"}, ""))
+
pattern_Registry_GetVulnReport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"registry", "v1", "repos", "repo_id", "digests", "digest", "vulnreport"}, ""))
pattern_Registry_ListManifestMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 3, 0, 4, 1, 5, 3, 2, 4}, []string{"registry", "v1", "repos", "repo_id", "manifestmetdata"}, ""))
@@ -1514,6 +1651,8 @@ var (
forward_Registry_GetSbom_0 = runtime.ForwardResponseMessage
+ forward_Registry_GetImageConfig_0 = runtime.ForwardResponseMessage
+
forward_Registry_GetVulnReport_0 = runtime.ForwardResponseMessage
forward_Registry_ListManifestMetadata_0 = runtime.ForwardResponseMessage
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index ba3c2cf1..43f7dc8f 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -174,6 +174,17 @@ service Registry {
};
}
+ rpc GetImageConfig(ImageConfigRequest) returns (ImageConfig) {
+ option (google.api.http) = {
+ get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/imageconfig"
+ };
+ option (chainguard.annotations.iam) = {
+ enabled: {
+ capabilities: [CAP_REPO_LIST, CAP_MANIFEST_METADATA_LIST]
+ }
+ };
+ }
+
rpc GetVulnReport(VulnReportRequest) returns (chainguard.platform.tenant.VulnReport) {
option (google.api.http) = {
get: "/registry/v1/repos/{repo_id=**}/digests/{digest=*}/vulnreport"
@@ -399,6 +410,37 @@ message ChangedImageConfig {
VolumeDiff volumes = 7;
}
+message ImageConfig {
+ // User defines the username or UID which the process in the container should run as.
+ string user = 1;
+
+ // ExposedPorts a set of ports to expose from a container running this image.
+ message ExposedPort {}
+ map exposed_ports = 2;
+
+ // Env is a list of environment variables to be used in a container.
+ repeated string env = 3;
+
+ // Entrypoint defines a list of arguments to use as the command to execute when the container starts.
+ repeated string entrypoint = 4;
+
+ // Cmd defines the default arguments to the entrypoint of the container.
+ repeated string cmd = 5;
+
+ message Volume {}
+ // Volumes is a set of directories describing where the process is likely write data specific to a container instance.
+ map volumes = 6;
+
+ // WorkingDir sets the current working directory of the entrypoint process in the container.
+ string working_dir = 7;
+
+ // Labels contains arbitrary metadata for the container.
+ map labels = 8;
+
+ // StopSignal contains the system call signal that will be sent to the container to exit.
+ string stop_signal = 9;
+}
+
message PackagesDiff {
repeated PackageReference added = 1;
repeated PackageReference removed = 2;
@@ -460,6 +502,15 @@ message SbomRequest {
string digest = 2;
}
+message ImageConfigRequest {
+ // The UIDP of the image repo to get config for.
+ string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
+ // The digest of the image to get config for.
+ string digest = 2;
+ // The architecture to get config for.
+ string arch = 3;
+}
+
message VulnReportRequest {
// The UIDP of the image repo to get a VulnReport for.
string repo_id = 1 [(chainguard.annotations.iam_scope) = true];
diff --git a/proto/platform/registry/v1/registry.platform_grpc.pb.go b/proto/platform/registry/v1/registry.platform_grpc.pb.go
index fe91f502..e6f20a31 100644
--- a/proto/platform/registry/v1/registry.platform_grpc.pb.go
+++ b/proto/platform/registry/v1/registry.platform_grpc.pb.go
@@ -32,6 +32,7 @@ const (
Registry_ListTagHistory_FullMethodName = "/chainguard.platform.registry.Registry/ListTagHistory"
Registry_DiffImage_FullMethodName = "/chainguard.platform.registry.Registry/DiffImage"
Registry_GetSbom_FullMethodName = "/chainguard.platform.registry.Registry/GetSbom"
+ Registry_GetImageConfig_FullMethodName = "/chainguard.platform.registry.Registry/GetImageConfig"
Registry_GetVulnReport_FullMethodName = "/chainguard.platform.registry.Registry/GetVulnReport"
Registry_ListManifestMetadata_FullMethodName = "/chainguard.platform.registry.Registry/ListManifestMetadata"
)
@@ -51,6 +52,7 @@ type RegistryClient interface {
ListTagHistory(ctx context.Context, in *TagHistoryFilter, opts ...grpc.CallOption) (*TagHistoryList, error)
DiffImage(ctx context.Context, in *DiffImageRequest, opts ...grpc.CallOption) (*DiffImageResponse, error)
GetSbom(ctx context.Context, in *SbomRequest, opts ...grpc.CallOption) (*v1.Sbom2, error)
+ GetImageConfig(ctx context.Context, in *ImageConfigRequest, opts ...grpc.CallOption) (*ImageConfig, error)
GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error)
ListManifestMetadata(ctx context.Context, in *ManifestMetadataFilter, opts ...grpc.CallOption) (*ManifestMetadataList, error)
}
@@ -162,6 +164,15 @@ func (c *registryClient) GetSbom(ctx context.Context, in *SbomRequest, opts ...g
return out, nil
}
+func (c *registryClient) GetImageConfig(ctx context.Context, in *ImageConfigRequest, opts ...grpc.CallOption) (*ImageConfig, error) {
+ out := new(ImageConfig)
+ err := c.cc.Invoke(ctx, Registry_GetImageConfig_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *registryClient) GetVulnReport(ctx context.Context, in *VulnReportRequest, opts ...grpc.CallOption) (*v1.VulnReport, error) {
out := new(v1.VulnReport)
err := c.cc.Invoke(ctx, Registry_GetVulnReport_FullMethodName, in, out, opts...)
@@ -195,6 +206,7 @@ type RegistryServer interface {
ListTagHistory(context.Context, *TagHistoryFilter) (*TagHistoryList, error)
DiffImage(context.Context, *DiffImageRequest) (*DiffImageResponse, error)
GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error)
+ GetImageConfig(context.Context, *ImageConfigRequest) (*ImageConfig, error)
GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error)
ListManifestMetadata(context.Context, *ManifestMetadataFilter) (*ManifestMetadataList, error)
mustEmbedUnimplementedRegistryServer()
@@ -237,6 +249,9 @@ func (UnimplementedRegistryServer) DiffImage(context.Context, *DiffImageRequest)
func (UnimplementedRegistryServer) GetSbom(context.Context, *SbomRequest) (*v1.Sbom2, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSbom not implemented")
}
+func (UnimplementedRegistryServer) GetImageConfig(context.Context, *ImageConfigRequest) (*ImageConfig, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetImageConfig not implemented")
+}
func (UnimplementedRegistryServer) GetVulnReport(context.Context, *VulnReportRequest) (*v1.VulnReport, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetVulnReport not implemented")
}
@@ -454,6 +469,24 @@ func _Registry_GetSbom_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
+func _Registry_GetImageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegistryServer).GetImageConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Registry_GetImageConfig_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegistryServer).GetImageConfig(ctx, req.(*ImageConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _Registry_GetVulnReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(VulnReportRequest)
if err := dec(in); err != nil {
@@ -541,6 +574,10 @@ var Registry_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetSbom",
Handler: _Registry_GetSbom_Handler,
},
+ {
+ MethodName: "GetImageConfig",
+ Handler: _Registry_GetImageConfig_Handler,
+ },
{
MethodName: "GetVulnReport",
Handler: _Registry_GetVulnReport_Handler,
diff --git a/proto/platform/registry/v1/test/registry.go b/proto/platform/registry/v1/test/registry.go
index 82493f9c..a0abfed0 100644
--- a/proto/platform/registry/v1/test/registry.go
+++ b/proto/platform/registry/v1/test/registry.go
@@ -47,6 +47,7 @@ type MockRegistryClient struct {
OnListTags []TagsOnList
OnUpdateRepo []RepoOnUpdate
OnListTagHistory []TagHistoryOnList
+ OnGetImageConfig []ImageConfigOnGet
OnGetSbom []SbomOnGet
OnGetVulnReport []VulnReportOnGet
OnDiffImage []DiffImage
@@ -111,6 +112,12 @@ type TagHistoryOnList struct {
Error error
}
+type ImageConfigOnGet struct {
+ Given *registry.ImageConfigRequest
+ Get *registry.ImageConfig
+ Error error
+}
+
type SbomOnGet struct {
Given *registry.SbomRequest
Get *tenant.Sbom2
@@ -210,6 +217,15 @@ func (m MockRegistryClient) ListTagHistory(_ context.Context, given *registry.Ta
return nil, fmt.Errorf("mock not found for %v", given)
}
+func (m MockRegistryClient) GetImageConfig(_ context.Context, given *registry.ImageConfigRequest, _ ...grpc.CallOption) (*registry.ImageConfig, error) { //nolint: revive
+ for _, o := range m.OnGetImageConfig {
+ if cmp.Equal(o.Given, given, protocmp.Transform()) {
+ return o.Get, o.Error
+ }
+ }
+ return nil, fmt.Errorf("mock not found for %v", given)
+}
+
func (m MockRegistryClient) GetSbom(_ context.Context, given *registry.SbomRequest, _ ...grpc.CallOption) (*tenant.Sbom2, error) { //nolint: revive
for _, o := range m.OnGetSbom {
if cmp.Equal(o.Given, given, protocmp.Transform()) {
From e82c08874547afb64196f059b30e6147ad55d30e Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Tue, 30 Apr 2024 11:27:14 -0700
Subject: [PATCH 31/41] Export 6ffe83d6b6b5baec495674d38f52a0fa81454b7b
Export: 6ffe83d6b6b5baec495674d38f52a0fa81454b7b
---
.../v1/identity_providers.platform.event.go | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/proto/platform/iam/v1/identity_providers.platform.event.go b/proto/platform/iam/v1/identity_providers.platform.event.go
index c3a344ec..052684da 100644
--- a/proto/platform/iam/v1/identity_providers.platform.event.go
+++ b/proto/platform/iam/v1/identity_providers.platform.event.go
@@ -24,6 +24,34 @@ func (x *IdentityProvider) CloudEventsSubject() string {
return x.GetId()
}
+// CloudEventsRedact implements chainguard.dev/sdk/events/Redactable.CloudEventsRedact.
+func (x *IdentityProvider) CloudEventsRedact() interface{} {
+ idp := &IdentityProvider{
+ Id: x.Id,
+ Name: x.Name,
+ Description: x.Description,
+ DefaultRole: x.DefaultRole,
+ }
+
+ switch cfg := x.Configuration.(type) {
+ case *IdentityProvider_Oidc:
+ // redact OIDC configuration
+ idp.Configuration = &IdentityProvider_Oidc{
+ Oidc: &IdentityProvider_OIDC{
+ Issuer: cfg.Oidc.Issuer,
+ ClientId: cfg.Oidc.ClientId,
+ // ClientSecret is redacted.
+ AdditionalScopes: cfg.Oidc.AdditionalScopes,
+ },
+ }
+ default:
+ // no redaction
+ idp.Configuration = x.Configuration
+ }
+
+ return idp
+}
+
// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
func (x *DeleteIdentityProviderRequest) CloudEventsExtension(key string) (string, bool) {
switch key {
From 63997ad26308e220e147f3568d3e0c5514edbd46 Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Tue, 30 Apr 2024 18:34:31 -0700
Subject: [PATCH 32/41] Export e86b070e80c0d819aa4d32048acd7de475af147d
Export: e86b070e80c0d819aa4d32048acd7de475af147d
---
README.md | 2 +-
proto/annotations/auth.pb.go | 2 +-
proto/annotations/events.pb.go | 2 +-
proto/capabilities/capabilities.pb.go | 2 +-
proto/platform/advisory/v1/advisory.platform.pb.go | 2 +-
proto/platform/advisory/v1/advisory.platform_grpc.pb.go | 2 +-
proto/platform/auth/v1/auth.platform.pb.go | 2 +-
proto/platform/auth/v1/auth.platform_grpc.pb.go | 2 +-
proto/platform/common/v1/uidp.platform.pb.go | 2 +-
proto/platform/events/v1/identities.platform.pb.go | 2 +-
proto/platform/events/v1/identities.platform_grpc.pb.go | 2 +-
proto/platform/events/v1/subscriptions.platform.pb.go | 2 +-
proto/platform/events/v1/subscriptions.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/account_associations.platform.pb.go | 2 +-
proto/platform/iam/v1/account_associations.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/group.platform.pb.go | 2 +-
proto/platform/iam/v1/group.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/group_invites.platform.pb.go | 2 +-
proto/platform/iam/v1/group_invites.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/identity.platform.pb.go | 2 +-
proto/platform/iam/v1/identity.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/identity_providers.platform.pb.go | 2 +-
proto/platform/iam/v1/identity_providers.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/role.platform.pb.go | 2 +-
proto/platform/iam/v1/role.platform_grpc.pb.go | 2 +-
proto/platform/iam/v1/role_binding.platform.pb.go | 2 +-
proto/platform/iam/v1/role_binding.platform_grpc.pb.go | 2 +-
proto/platform/oidc/v1/oidc.platform.pb.go | 2 +-
proto/platform/oidc/v1/oidc.platform_grpc.pb.go | 2 +-
proto/platform/ping/v1/ping.platform.pb.go | 2 +-
proto/platform/ping/v1/ping.platform_grpc.pb.go | 2 +-
proto/platform/registry/v1/registry.platform.pb.go | 2 +-
proto/platform/registry/v1/registry.platform_grpc.pb.go | 2 +-
proto/platform/tenant/v1/attestation.platform.pb.go | 2 +-
proto/platform/tenant/v1/attestation.platform_grpc.pb.go | 2 +-
proto/platform/tenant/v1/sbom.platform.pb.go | 2 +-
proto/platform/tenant/v1/sbom.platform_grpc.pb.go | 2 +-
proto/platform/tenant/v1/signature.platform.pb.go | 2 +-
proto/platform/tenant/v1/signature.platform_grpc.pb.go | 2 +-
proto/platform/tenant/v1/vuln.platform.pb.go | 2 +-
proto/platform/tenant/v1/vuln.platform_grpc.pb.go | 2 +-
41 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/README.md b/README.md
index 6664b400..e650c9b0 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ Example for MacOS:
brew install protobuf
```
-We currently require `protoc` v21.12.
+We currently require `protoc` v5.26.1.
Install `protoc` codegen dependencies:
diff --git a/proto/annotations/auth.pb.go b/proto/annotations/auth.pb.go
index 32414401..b41797d0 100644
--- a/proto/annotations/auth.pb.go
+++ b/proto/annotations/auth.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: auth.proto
package annotations
diff --git a/proto/annotations/events.pb.go b/proto/annotations/events.pb.go
index 9c6a02d6..0b371f7d 100644
--- a/proto/annotations/events.pb.go
+++ b/proto/annotations/events.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: events.proto
package annotations
diff --git a/proto/capabilities/capabilities.pb.go b/proto/capabilities/capabilities.pb.go
index 48cd9f59..69e77d49 100644
--- a/proto/capabilities/capabilities.pb.go
+++ b/proto/capabilities/capabilities.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: capabilities.proto
package capabilities
diff --git a/proto/platform/advisory/v1/advisory.platform.pb.go b/proto/platform/advisory/v1/advisory.platform.pb.go
index 86fa949e..889b4650 100644
--- a/proto/platform/advisory/v1/advisory.platform.pb.go
+++ b/proto/platform/advisory/v1/advisory.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: advisory.platform.proto
package v1
diff --git a/proto/platform/advisory/v1/advisory.platform_grpc.pb.go b/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
index a5657e05..21682e0a 100644
--- a/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
+++ b/proto/platform/advisory/v1/advisory.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: advisory.platform.proto
package v1
diff --git a/proto/platform/auth/v1/auth.platform.pb.go b/proto/platform/auth/v1/auth.platform.pb.go
index 05fbafbf..e458bdf2 100644
--- a/proto/platform/auth/v1/auth.platform.pb.go
+++ b/proto/platform/auth/v1/auth.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: auth.platform.proto
package v1
diff --git a/proto/platform/auth/v1/auth.platform_grpc.pb.go b/proto/platform/auth/v1/auth.platform_grpc.pb.go
index 17053a34..eef4dcd9 100644
--- a/proto/platform/auth/v1/auth.platform_grpc.pb.go
+++ b/proto/platform/auth/v1/auth.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: auth.platform.proto
package v1
diff --git a/proto/platform/common/v1/uidp.platform.pb.go b/proto/platform/common/v1/uidp.platform.pb.go
index b96a0549..7bc5551c 100644
--- a/proto/platform/common/v1/uidp.platform.pb.go
+++ b/proto/platform/common/v1/uidp.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: uidp.platform.proto
package v1
diff --git a/proto/platform/events/v1/identities.platform.pb.go b/proto/platform/events/v1/identities.platform.pb.go
index eb94e7d9..c3e04c0a 100644
--- a/proto/platform/events/v1/identities.platform.pb.go
+++ b/proto/platform/events/v1/identities.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: identities.platform.proto
package v1
diff --git a/proto/platform/events/v1/identities.platform_grpc.pb.go b/proto/platform/events/v1/identities.platform_grpc.pb.go
index 4ca37918..7b97ffcd 100644
--- a/proto/platform/events/v1/identities.platform_grpc.pb.go
+++ b/proto/platform/events/v1/identities.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: identities.platform.proto
package v1
diff --git a/proto/platform/events/v1/subscriptions.platform.pb.go b/proto/platform/events/v1/subscriptions.platform.pb.go
index dd1799e6..cc923951 100644
--- a/proto/platform/events/v1/subscriptions.platform.pb.go
+++ b/proto/platform/events/v1/subscriptions.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: subscriptions.platform.proto
package v1
diff --git a/proto/platform/events/v1/subscriptions.platform_grpc.pb.go b/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
index 54ba9058..ce225769 100644
--- a/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
+++ b/proto/platform/events/v1/subscriptions.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: subscriptions.platform.proto
package v1
diff --git a/proto/platform/iam/v1/account_associations.platform.pb.go b/proto/platform/iam/v1/account_associations.platform.pb.go
index 1af0b54d..2e02c7f7 100644
--- a/proto/platform/iam/v1/account_associations.platform.pb.go
+++ b/proto/platform/iam/v1/account_associations.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: account_associations.platform.proto
package v1
diff --git a/proto/platform/iam/v1/account_associations.platform_grpc.pb.go b/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
index 195b4de6..7c5482e3 100644
--- a/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/account_associations.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: account_associations.platform.proto
package v1
diff --git a/proto/platform/iam/v1/group.platform.pb.go b/proto/platform/iam/v1/group.platform.pb.go
index 47162929..9860a173 100644
--- a/proto/platform/iam/v1/group.platform.pb.go
+++ b/proto/platform/iam/v1/group.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: group.platform.proto
package v1
diff --git a/proto/platform/iam/v1/group.platform_grpc.pb.go b/proto/platform/iam/v1/group.platform_grpc.pb.go
index 94c10942..a86b2aad 100644
--- a/proto/platform/iam/v1/group.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/group.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: group.platform.proto
package v1
diff --git a/proto/platform/iam/v1/group_invites.platform.pb.go b/proto/platform/iam/v1/group_invites.platform.pb.go
index 342f4663..87a0b464 100644
--- a/proto/platform/iam/v1/group_invites.platform.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: group_invites.platform.proto
package v1
diff --git a/proto/platform/iam/v1/group_invites.platform_grpc.pb.go b/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
index 13dcbff8..9a9b9c75 100644
--- a/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/group_invites.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: group_invites.platform.proto
package v1
diff --git a/proto/platform/iam/v1/identity.platform.pb.go b/proto/platform/iam/v1/identity.platform.pb.go
index 1e88a650..693c98f5 100644
--- a/proto/platform/iam/v1/identity.platform.pb.go
+++ b/proto/platform/iam/v1/identity.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: identity.platform.proto
package v1
diff --git a/proto/platform/iam/v1/identity.platform_grpc.pb.go b/proto/platform/iam/v1/identity.platform_grpc.pb.go
index 7dfa1065..f509c4d3 100644
--- a/proto/platform/iam/v1/identity.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/identity.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: identity.platform.proto
package v1
diff --git a/proto/platform/iam/v1/identity_providers.platform.pb.go b/proto/platform/iam/v1/identity_providers.platform.pb.go
index 886c5145..abed021a 100644
--- a/proto/platform/iam/v1/identity_providers.platform.pb.go
+++ b/proto/platform/iam/v1/identity_providers.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: identity_providers.platform.proto
package v1
diff --git a/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go b/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
index 63930595..60b20f6c 100644
--- a/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/identity_providers.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: identity_providers.platform.proto
package v1
diff --git a/proto/platform/iam/v1/role.platform.pb.go b/proto/platform/iam/v1/role.platform.pb.go
index 28515544..816400c0 100644
--- a/proto/platform/iam/v1/role.platform.pb.go
+++ b/proto/platform/iam/v1/role.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: role.platform.proto
package v1
diff --git a/proto/platform/iam/v1/role.platform_grpc.pb.go b/proto/platform/iam/v1/role.platform_grpc.pb.go
index c6456ef5..593891b8 100644
--- a/proto/platform/iam/v1/role.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/role.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: role.platform.proto
package v1
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
index 40b25231..a0d6b4da 100644
--- a/proto/platform/iam/v1/role_binding.platform.pb.go
+++ b/proto/platform/iam/v1/role_binding.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: role_binding.platform.proto
package v1
diff --git a/proto/platform/iam/v1/role_binding.platform_grpc.pb.go b/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
index 2c8bbc27..70734cf3 100644
--- a/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
+++ b/proto/platform/iam/v1/role_binding.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: role_binding.platform.proto
package v1
diff --git a/proto/platform/oidc/v1/oidc.platform.pb.go b/proto/platform/oidc/v1/oidc.platform.pb.go
index d26d3b45..9b2888c5 100644
--- a/proto/platform/oidc/v1/oidc.platform.pb.go
+++ b/proto/platform/oidc/v1/oidc.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: oidc.platform.proto
package v1
diff --git a/proto/platform/oidc/v1/oidc.platform_grpc.pb.go b/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
index 80b069e5..f08ece4e 100644
--- a/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
+++ b/proto/platform/oidc/v1/oidc.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: oidc.platform.proto
package v1
diff --git a/proto/platform/ping/v1/ping.platform.pb.go b/proto/platform/ping/v1/ping.platform.pb.go
index d55b2916..45a42d39 100644
--- a/proto/platform/ping/v1/ping.platform.pb.go
+++ b/proto/platform/ping/v1/ping.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: ping.platform.proto
package v1
diff --git a/proto/platform/ping/v1/ping.platform_grpc.pb.go b/proto/platform/ping/v1/ping.platform_grpc.pb.go
index f4feefd8..8367718d 100644
--- a/proto/platform/ping/v1/ping.platform_grpc.pb.go
+++ b/proto/platform/ping/v1/ping.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: ping.platform.proto
package v1
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index c7785e57..0f8794dd 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: registry.platform.proto
package v1
diff --git a/proto/platform/registry/v1/registry.platform_grpc.pb.go b/proto/platform/registry/v1/registry.platform_grpc.pb.go
index e6f20a31..1ce0e110 100644
--- a/proto/platform/registry/v1/registry.platform_grpc.pb.go
+++ b/proto/platform/registry/v1/registry.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: registry.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/attestation.platform.pb.go b/proto/platform/tenant/v1/attestation.platform.pb.go
index f2036725..347da47a 100644
--- a/proto/platform/tenant/v1/attestation.platform.pb.go
+++ b/proto/platform/tenant/v1/attestation.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: attestation.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/attestation.platform_grpc.pb.go b/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
index 321d546e..29dad01f 100644
--- a/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
+++ b/proto/platform/tenant/v1/attestation.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: attestation.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/sbom.platform.pb.go b/proto/platform/tenant/v1/sbom.platform.pb.go
index 6db35c23..69a23ca4 100644
--- a/proto/platform/tenant/v1/sbom.platform.pb.go
+++ b/proto/platform/tenant/v1/sbom.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: sbom.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/sbom.platform_grpc.pb.go b/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
index 4f8ecc26..85c02032 100644
--- a/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
+++ b/proto/platform/tenant/v1/sbom.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: sbom.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/signature.platform.pb.go b/proto/platform/tenant/v1/signature.platform.pb.go
index 1320a8b7..40c8acfc 100644
--- a/proto/platform/tenant/v1/signature.platform.pb.go
+++ b/proto/platform/tenant/v1/signature.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: signature.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/signature.platform_grpc.pb.go b/proto/platform/tenant/v1/signature.platform_grpc.pb.go
index 52506e8c..86f0c51f 100644
--- a/proto/platform/tenant/v1/signature.platform_grpc.pb.go
+++ b/proto/platform/tenant/v1/signature.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: signature.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/vuln.platform.pb.go b/proto/platform/tenant/v1/vuln.platform.pb.go
index 2881b884..96be9e43 100644
--- a/proto/platform/tenant/v1/vuln.platform.pb.go
+++ b/proto/platform/tenant/v1/vuln.platform.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
-// protoc v3.21.12
+// protoc v5.26.1
// source: vuln.platform.proto
package v1
diff --git a/proto/platform/tenant/v1/vuln.platform_grpc.pb.go b/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
index 818be6ab..f11dfa37 100644
--- a/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
+++ b/proto/platform/tenant/v1/vuln.platform_grpc.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
-// - protoc v3.21.12
+// - protoc v5.26.1
// source: vuln.platform.proto
package v1
From 061962da67489cc9bc3b71f3584e9215fac4d1b9 Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Tue, 30 Apr 2024 19:40:08 -0700
Subject: [PATCH 33/41] Export 651fc169533e8e6539d6cfd16278c60dda050cd0
Export: 651fc169533e8e6539d6cfd16278c60dda050cd0
---
.../registry/v1/registry.platform.pb.go | 1301 +++++++++--------
.../registry/v1/registry.platform.proto | 3 +
2 files changed, 660 insertions(+), 644 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 0f8794dd..a700c2c9 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -181,6 +181,8 @@ type SyncConfig struct {
Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
// Controls whether exported tags will be uniquely labeled.
UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
+ // When the catalog syncer should stop syncing from the source repository.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
}
func (x *SyncConfig) Reset() {
@@ -229,6 +231,13 @@ func (x *SyncConfig) GetUniqueTags() bool {
return false
}
+func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
type CreateRepoRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2900,597 +2909,600 @@ var file_registry_platform_proto_rawDesc = []byte{
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
- 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
- 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
- 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
- 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
- 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
- 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
- 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
- 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
- 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
- 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
+ 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
- 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
- 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
+ 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
- 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
+ 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
+ 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
+ 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
+ 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
+ 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
+ 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
+ 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
+ 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
+ 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
+ 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
+ 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
+ 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
- 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
- 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
- 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
- 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
- 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
+ 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
+ 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
- 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
+ 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
+ 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
+ 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
+ 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
+ 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
+ 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
+ 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
+ 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
+ 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
- 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
- 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
- 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
- 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
- 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
- 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
- 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
- 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
- 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
- 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
- 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
- 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
- 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
+ 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
+ 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
- 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
+ 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
+ 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
+ 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
+ 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
+ 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
+ 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
+ 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
+ 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
+ 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
+ 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
- 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
- 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
+ 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
+ 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
+ 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
- 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
- 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
- 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
- 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
- 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
- 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
- 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
- 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
- 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
- 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
- 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
- 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
- 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
- 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
- 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
- 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
- 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
- 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
- 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
+ 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
+ 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
+ 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
+ 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
+ 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
+ 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
+ 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
+ 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
+ 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
+ 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
+ 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
+ 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
+ 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
- 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
- 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
- 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
- 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
- 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
- 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
- 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
+ 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
- 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
- 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
- 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
- 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
- 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
+ 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
+ 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
+ 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
+ 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
+ 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
+ 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
+ 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
+ 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
- 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
- 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
+ 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
+ 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
+ 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
- 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
- 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
- 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
- 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
- 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
+ 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
- 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
- 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
+ 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
- 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
+ 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
- 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
+ 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
+ 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
+ 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
+ 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
+ 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
+ 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
+ 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
+ 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
+ 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
+ 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
+ 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
+ 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
+ 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3559,8 +3571,8 @@ var file_registry_platform_proto_goTypes = []interface{}{
nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
(*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
+ (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
(*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
@@ -3569,87 +3581,88 @@ var file_registry_platform_proto_goTypes = []interface{}{
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 64, // [64:78] is the sub-list for method output_type
- 50, // [50:64] is the sub-list for method input_type
- 50, // [50:50] is the sub-list for extension type_name
- 50, // [50:50] is the sub-list for extension extendee
- 0, // [0:50] is the sub-list for field type_name
+ 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
+ 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 65, // [65:79] is the sub-list for method output_type
+ 51, // [51:65] is the sub-list for method input_type
+ 51, // [51:51] is the sub-list for extension type_name
+ 51, // [51:51] is the sub-list for extension extendee
+ 0, // [0:51] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index 43f7dc8f..f3ac9395 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -242,6 +242,9 @@ message SyncConfig {
// Controls whether exported tags will be uniquely labeled.
bool unique_tags = 2;
+
+ // When the catalog syncer should stop syncing from the source repository.
+ google.protobuf.Timestamp expiration = 3;
}
message CreateRepoRequest {
From 93842880cfc4ff39c73c67f5305534f9d6f8e4f7 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Tue, 30 Apr 2024 19:53:10 -0700
Subject: [PATCH 34/41] Export bb2b985b20049e156a090a7ccd142d3c434f46e3
Export: bb2b985b20049e156a090a7ccd142d3c434f46e3
---
.github/workflows/verify.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
index 7b8366ca..33939348 100644
--- a/.github/workflows/verify.yaml
+++ b/.github/workflows/verify.yaml
@@ -52,7 +52,7 @@ jobs:
- name: Install Protoc
run: |
cd "$(mktemp -d)"
- wget -O protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip
+ wget -O protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip
unzip protoc.zip -d .
chmod +x ./bin/protoc
echo "$(pwd)/bin" >> "$GITHUB_PATH"
From 8f0fcb7d5f021dda7ef8b9b07abef5e874e09630 Mon Sep 17 00:00:00 2001
From: Jason Hall
Date: Wed, 1 May 2024 11:55:35 -0400
Subject: [PATCH 35/41] Export 80c5fec7641b5813ab3c8f7967a0e490b1c21228
Export: 80c5fec7641b5813ab3c8f7967a0e490b1c21228
---
.../registry/v1/registry.platform.pb.go | 1301 ++++++++---------
.../registry/v1/registry.platform.proto | 3 -
2 files changed, 644 insertions(+), 660 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index a700c2c9..0f8794dd 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -181,8 +181,6 @@ type SyncConfig struct {
Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
// Controls whether exported tags will be uniquely labeled.
UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
- // When the catalog syncer should stop syncing from the source repository.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
}
func (x *SyncConfig) Reset() {
@@ -231,13 +229,6 @@ func (x *SyncConfig) GetUniqueTags() bool {
return false
}
-func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
type CreateRepoRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2909,600 +2900,597 @@ var file_registry_platform_proto_rawDesc = []byte{
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
- 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
- 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
+ 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
+ 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
+ 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
+ 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
- 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
- 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
- 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
- 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
- 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
- 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
- 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
- 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
- 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
- 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
- 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
- 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
- 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
+ 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
+ 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
+ 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
+ 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
+ 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
+ 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
- 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
- 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
- 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
- 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
- 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+ 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
+ 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
+ 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
+ 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
+ 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
+ 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
+ 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
- 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
- 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
- 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
- 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
+ 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
+ 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
+ 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
- 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
- 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
+ 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
+ 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
+ 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
+ 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
+ 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
+ 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
+ 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
+ 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
+ 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
+ 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
+ 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
+ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
+ 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
+ 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
- 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
- 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
- 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
- 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
- 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
- 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
- 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
- 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
- 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+ 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
- 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
- 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
- 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
- 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
+ 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
+ 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
+ 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
+ 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
+ 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
+ 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
- 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
- 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
- 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
- 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
+ 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
+ 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
+ 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
+ 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
+ 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
+ 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
+ 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
+ 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
+ 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
- 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
- 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
- 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
- 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
- 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
- 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
- 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
+ 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
- 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
+ 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
+ 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
+ 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
+ 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
+ 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
+ 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
+ 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
- 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
- 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
- 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
- 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
- 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
- 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
+ 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
+ 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
+ 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
+ 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
+ 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
- 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
- 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
- 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
- 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
- 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
- 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
- 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
- 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
+ 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
+ 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
+ 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
+ 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
+ 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
- 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
+ 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
- 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
+ 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
- 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
+ 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
+ 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
- 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
- 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
- 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
+ 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
- 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
- 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
- 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
- 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
- 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
- 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
- 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
- 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
- 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
- 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
- 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -3571,8 +3559,8 @@ var file_registry_platform_proto_goTypes = []interface{}{
nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
(*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
+ (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
(*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
@@ -3581,88 +3569,87 @@ var file_registry_platform_proto_goTypes = []interface{}{
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
- 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 65, // [65:79] is the sub-list for method output_type
- 51, // [51:65] is the sub-list for method input_type
- 51, // [51:51] is the sub-list for extension type_name
- 51, // [51:51] is the sub-list for extension extendee
- 0, // [0:51] is the sub-list for field type_name
+ 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 64, // [64:78] is the sub-list for method output_type
+ 50, // [50:64] is the sub-list for method input_type
+ 50, // [50:50] is the sub-list for extension type_name
+ 50, // [50:50] is the sub-list for extension extendee
+ 0, // [0:50] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index f3ac9395..43f7dc8f 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -242,9 +242,6 @@ message SyncConfig {
// Controls whether exported tags will be uniquely labeled.
bool unique_tags = 2;
-
- // When the catalog syncer should stop syncing from the source repository.
- google.protobuf.Timestamp expiration = 3;
}
message CreateRepoRequest {
From 22226d5f672dce0651a97e4937ae6241791a694b Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Wed, 1 May 2024 09:57:58 -0700
Subject: [PATCH 36/41] Export d32da0b797c348bde7ce4237303052ff28b3f737
Export: d32da0b797c348bde7ce4237303052ff28b3f737
---
.../registry/v1/registry.platform.pb.go | 1301 +++++++++--------
.../registry/v1/registry.platform.proto | 3 +
2 files changed, 660 insertions(+), 644 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 0f8794dd..a700c2c9 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -181,6 +181,8 @@ type SyncConfig struct {
Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
// Controls whether exported tags will be uniquely labeled.
UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
+ // When the catalog syncer should stop syncing from the source repository.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
}
func (x *SyncConfig) Reset() {
@@ -229,6 +231,13 @@ func (x *SyncConfig) GetUniqueTags() bool {
return false
}
+func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
type CreateRepoRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2900,597 +2909,600 @@ var file_registry_platform_proto_rawDesc = []byte{
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
- 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
- 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
- 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
- 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
- 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
- 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
- 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
- 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
- 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
- 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
+ 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
- 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
- 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
+ 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
- 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
+ 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
+ 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
+ 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
+ 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
+ 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
+ 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
+ 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
+ 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
+ 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
+ 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
+ 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
+ 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
- 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
- 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
- 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
- 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
- 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
+ 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
+ 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
- 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
+ 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
+ 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
+ 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
+ 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
+ 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
+ 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
+ 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
+ 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
+ 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
- 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
- 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
- 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
- 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
- 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
- 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
- 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
- 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
- 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
- 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
- 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
- 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
- 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
+ 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
+ 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
- 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
+ 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
+ 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
+ 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
+ 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
+ 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
+ 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
+ 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
+ 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
+ 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
+ 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
- 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
- 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
+ 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
+ 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
+ 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
- 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
- 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
- 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
- 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
- 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
- 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
- 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
- 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
- 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
- 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
- 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
- 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
- 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
- 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
- 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
- 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
- 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
- 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
- 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
+ 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
+ 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
+ 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
+ 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
+ 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
+ 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
+ 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
+ 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
+ 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
+ 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
+ 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
+ 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
+ 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
- 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
- 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
- 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
- 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
- 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
- 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
- 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
+ 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
- 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
- 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
- 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
- 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
- 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
+ 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
+ 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
+ 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
+ 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
+ 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
+ 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
+ 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
+ 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
- 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
- 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
+ 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
+ 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
+ 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
- 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
- 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
- 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
- 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
- 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
+ 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
- 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
- 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
+ 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
- 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
+ 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
- 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
+ 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
+ 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
+ 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
+ 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
+ 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
+ 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
+ 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
+ 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
+ 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
+ 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
+ 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
+ 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
+ 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3559,8 +3571,8 @@ var file_registry_platform_proto_goTypes = []interface{}{
nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
(*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
+ (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
(*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
@@ -3569,87 +3581,88 @@ var file_registry_platform_proto_goTypes = []interface{}{
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 64, // [64:78] is the sub-list for method output_type
- 50, // [50:64] is the sub-list for method input_type
- 50, // [50:50] is the sub-list for extension type_name
- 50, // [50:50] is the sub-list for extension extendee
- 0, // [0:50] is the sub-list for field type_name
+ 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
+ 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 65, // [65:79] is the sub-list for method output_type
+ 51, // [51:65] is the sub-list for method input_type
+ 51, // [51:51] is the sub-list for extension type_name
+ 51, // [51:51] is the sub-list for extension extendee
+ 0, // [0:51] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index 43f7dc8f..f3ac9395 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -242,6 +242,9 @@ message SyncConfig {
// Controls whether exported tags will be uniquely labeled.
bool unique_tags = 2;
+
+ // When the catalog syncer should stop syncing from the source repository.
+ google.protobuf.Timestamp expiration = 3;
}
message CreateRepoRequest {
From 2f792c8b1541a8a4b1bcb0da93c56c1c147422fd Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Wed, 1 May 2024 12:08:08 -0700
Subject: [PATCH 37/41] Export 7a6c4c5e9a09d7b03887f684b0b4516579836b72
Export: 7a6c4c5e9a09d7b03887f684b0b4516579836b72
---
.../registry/v1/registry.platform.pb.go | 1301 ++++++++---------
.../registry/v1/registry.platform.proto | 3 -
2 files changed, 644 insertions(+), 660 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index a700c2c9..0f8794dd 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -181,8 +181,6 @@ type SyncConfig struct {
Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
// Controls whether exported tags will be uniquely labeled.
UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
- // When the catalog syncer should stop syncing from the source repository.
- Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
}
func (x *SyncConfig) Reset() {
@@ -231,13 +229,6 @@ func (x *SyncConfig) GetUniqueTags() bool {
return false
}
-func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
- if x != nil {
- return x.Expiration
- }
- return nil
-}
-
type CreateRepoRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2909,600 +2900,597 @@ var file_registry_platform_proto_rawDesc = []byte{
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
- 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
- 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
+ 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
+ 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
+ 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
+ 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
- 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
- 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
- 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
- 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
- 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
- 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
- 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
- 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
- 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
+ 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
- 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
- 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
- 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
- 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
+ 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
+ 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
+ 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
+ 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
+ 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
+ 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
+ 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
+ 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
+ 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
- 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
- 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
- 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
- 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
- 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
+ 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+ 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
+ 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
+ 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
+ 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
+ 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
+ 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
+ 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
+ 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
+ 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
- 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
- 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
- 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
- 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
+ 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
+ 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
+ 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
+ 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
- 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
- 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
+ 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
+ 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
+ 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
+ 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
+ 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
+ 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
+ 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
+ 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
+ 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
+ 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
+ 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
+ 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
+ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
+ 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
+ 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
+ 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
+ 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
- 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
- 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
- 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
- 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
- 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
- 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
- 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
- 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
- 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+ 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
- 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
- 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
- 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
- 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+ 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
+ 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
+ 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
+ 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
+ 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
+ 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
+ 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
+ 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
- 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
- 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
- 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
- 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
+ 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
+ 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
+ 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
+ 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
+ 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
+ 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
+ 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
+ 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
+ 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
+ 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
+ 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
+ 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
+ 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
+ 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
+ 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
+ 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
- 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
- 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
- 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
- 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
- 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
- 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
- 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
+ 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
- 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
+ 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
+ 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
+ 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
+ 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
+ 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
+ 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
+ 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
- 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
- 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
- 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
- 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
- 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
- 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
+ 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
+ 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
+ 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
+ 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
+ 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
+ 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
+ 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
- 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
- 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
- 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
- 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
- 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
- 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
- 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
- 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
+ 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
+ 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
+ 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
+ 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
+ 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
+ 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
+ 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
+ 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
- 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
+ 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
+ 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
+ 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
- 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
+ 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
- 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
+ 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
+ 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
+ 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
- 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
- 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
- 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
+ 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
+ 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
- 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
- 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
- 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
- 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
- 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
- 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
- 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
- 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
- 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
- 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
- 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
+ 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -3571,8 +3559,8 @@ var file_registry_platform_proto_goTypes = []interface{}{
nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
(*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
- (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
+ (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
+ (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
(*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
@@ -3581,88 +3569,87 @@ var file_registry_platform_proto_goTypes = []interface{}{
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
- 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 65, // [65:79] is the sub-list for method output_type
- 51, // [51:65] is the sub-list for method input_type
- 51, // [51:51] is the sub-list for extension type_name
- 51, // [51:51] is the sub-list for extension extendee
- 0, // [0:51] is the sub-list for field type_name
+ 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 64, // [64:78] is the sub-list for method output_type
+ 50, // [50:64] is the sub-list for method input_type
+ 50, // [50:50] is the sub-list for extension type_name
+ 50, // [50:50] is the sub-list for extension extendee
+ 0, // [0:50] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index f3ac9395..43f7dc8f 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -242,9 +242,6 @@ message SyncConfig {
// Controls whether exported tags will be uniquely labeled.
bool unique_tags = 2;
-
- // When the catalog syncer should stop syncing from the source repository.
- google.protobuf.Timestamp expiration = 3;
}
message CreateRepoRequest {
From c6e5c0490bf1bfb9f0c8f2e15e930b7b18f3928e Mon Sep 17 00:00:00 2001
From: Matt Moore
Date: Thu, 2 May 2024 08:29:31 -0700
Subject: [PATCH 38/41] Export c6fb2950ad10bc0134a614dda9d216e89cdc03cf
Export: c6fb2950ad10bc0134a614dda9d216e89cdc03cf
---
.../registry/v1/registry.platform.pb.go | 1301 +++++++++--------
.../registry/v1/registry.platform.proto | 3 +
2 files changed, 660 insertions(+), 644 deletions(-)
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index 0f8794dd..a700c2c9 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -181,6 +181,8 @@ type SyncConfig struct {
Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
// Controls whether exported tags will be uniquely labeled.
UniqueTags bool `protobuf:"varint,2,opt,name=unique_tags,json=uniqueTags,proto3" json:"unique_tags,omitempty"`
+ // When the catalog syncer should stop syncing from the source repository.
+ Expiration *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
}
func (x *SyncConfig) Reset() {
@@ -229,6 +231,13 @@ func (x *SyncConfig) GetUniqueTags() bool {
return false
}
+func (x *SyncConfig) GetExpiration() *timestamppb.Timestamp {
+ if x != nil {
+ return x.Expiration
+ }
+ return nil
+}
+
type CreateRepoRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2900,597 +2909,600 @@ var file_registry_platform_proto_rawDesc = []byte{
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a,
- 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x22, 0x70,
- 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08,
- 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a,
- 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74,
- 0x65, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44,
- 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06,
- 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12,
- 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a,
- 0x09, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69,
- 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65,
- 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
- 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a,
- 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70,
- 0x6f, 0x63, 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
- 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61,
- 0x67, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a,
- 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
- 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65,
- 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
+ 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f,
- 0x72, 0x79, 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
- 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
- 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
- 0x5b, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
- 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c,
- 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
+ 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
+ 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
+ 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18,
- 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a,
- 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
+ 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
+ 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
+ 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
+ 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
+ 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
+ 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
+ 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
+ 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
+ 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
+ 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
+ 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
+ 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
+ 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
+ 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a,
- 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73,
- 0x12, 0x4c, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c,
- 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
- 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11,
- 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61,
- 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55,
- 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
+ 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
+ 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a,
- 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12,
+ 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
+ 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
+ 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
+ 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
+ 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
+ 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
+ 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
+ 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
+ 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
+ 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
+ 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
+ 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
+ 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a,
- 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69,
- 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a,
- 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e,
- 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66,
- 0x66, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x46, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64,
- 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12,
- 0x62, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x48, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75,
- 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12,
- 0x60, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74,
- 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
- 0x65, 0x6e, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f,
- 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f,
- 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f,
- 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73,
- 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
- 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
+ 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
+ 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
- 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
+ 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+ 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
+ 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
+ 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
+ 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
+ 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
+ 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
+ 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
+ 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
+ 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
+ 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
+ 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
+ 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
+ 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
+ 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
- 0x69, 0x66, 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x1a, 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63,
- 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+ 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
+ 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
+ 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
+ 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
+ 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
+ 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
- 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d,
- 0x0a, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61,
- 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a,
- 0x20, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64,
- 0x62, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72,
- 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e,
- 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
+ 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10,
- 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49,
- 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
- 0x46, 0x0a, 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
- 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
- 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64,
- 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
- 0x72, 0x63, 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61,
- 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65,
- 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e,
- 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64,
- 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f,
- 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e,
- 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22,
- 0xd8, 0x01, 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
- 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
- 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75,
- 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
- 0x50, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04,
+ 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
+ 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
+ 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
+ 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
+ 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
+ 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
+ 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
+ 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16,
- 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
+ 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
+ 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
+ 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
+ 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
+ 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
+ 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
+ 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
+ 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
+ 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
+ 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
+ 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
+ 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
+ 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65,
- 0x72, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08,
- 0x0a, 0x04, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
- 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55,
- 0x4d, 0x10, 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x12, 0xe4, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72,
- 0x65, 0x70, 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02,
- 0xc3, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72,
- 0x65, 0x70, 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05,
- 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
+ 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
+ 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65,
- 0x70, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52,
- 0x65, 0x70, 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01,
- 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12,
- 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c,
- 0x2a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
- 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34,
- 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
- 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01,
- 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b,
- 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
+ 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
+ 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
+ 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
+ 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
+ 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
+ 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
+ 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
+ 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22,
- 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69,
- 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc,
- 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61,
- 0x67, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
+ 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
+ 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
+ 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e,
- 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83,
- 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76,
- 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02,
- 0xcd, 0x0c, 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67,
- 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
- 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73,
- 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a,
- 0x02, 0xcd, 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
+ 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05,
- 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65,
- 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65,
- 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63,
+ 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
+ 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
- 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
- 0x40, 0x12, 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
- 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12,
- 0xbd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
+ 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
+ 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
+ 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
+ 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e,
- 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93,
- 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12,
- 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
+ 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
+ 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
+ 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
+ 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
+ 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
+ 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
+ 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
+ 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
+ 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
+ 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
+ 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
+ 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
+ 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
+ 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
+ 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61,
- 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69,
- 0x66, 0x65, 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x76, 0x31, 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x33,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
+ 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
+ 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
+ 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
+ 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
+ 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
+ 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
+ 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
+ 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
+ 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
+ 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
+ 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
+ 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
+ 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3559,8 +3571,8 @@ var file_registry_platform_proto_goTypes = []interface{}{
nil, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry
nil, // 49: chainguard.platform.registry.ImageConfig.LabelsEntry
(*PackagesDiff_ChangedPackageReference)(nil), // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- (*v1.UIDPFilter)(nil), // 51: chainguard.platform.common.UIDPFilter
- (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp
+ (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp
+ (*v1.UIDPFilter)(nil), // 52: chainguard.platform.common.UIDPFilter
(*v11.Scanner)(nil), // 53: chainguard.platform.tenant.Scanner
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*v11.Sbom2)(nil), // 55: chainguard.platform.tenant.Sbom2
@@ -3569,87 +3581,88 @@ var file_registry_platform_proto_goTypes = []interface{}{
var file_registry_platform_proto_depIdxs = []int32{
0, // 0: chainguard.platform.registry.Repo.catalog_tier:type_name -> chainguard.platform.registry.CatalogTier
2, // 1: chainguard.platform.registry.Repo.sync_config:type_name -> chainguard.platform.registry.SyncConfig
- 1, // 2: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
- 1, // 3: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
- 51, // 4: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 9, // 5: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
- 52, // 6: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
- 51, // 7: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
- 52, // 8: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
- 9, // 9: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
- 52, // 10: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
- 52, // 11: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
- 14, // 12: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
- 52, // 13: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
- 19, // 14: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
- 22, // 15: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
- 16, // 16: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
- 17, // 17: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
- 35, // 18: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
- 36, // 19: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
- 37, // 20: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
- 38, // 21: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
- 39, // 22: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
- 40, // 23: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
- 42, // 24: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
- 46, // 25: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
- 48, // 26: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
- 49, // 27: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
- 21, // 28: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
- 21, // 29: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
- 50, // 30: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
- 24, // 31: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
- 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
- 23, // 33: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
- 53, // 34: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
- 52, // 35: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
- 29, // 36: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
- 30, // 37: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
- 52, // 38: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
- 52, // 39: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
- 32, // 40: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
- 33, // 41: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
- 43, // 42: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
- 44, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
- 41, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
- 45, // 46: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
- 47, // 47: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
- 20, // 48: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
- 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
- 3, // 50: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
- 1, // 51: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
- 6, // 52: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
- 4, // 53: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
- 7, // 54: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
- 9, // 55: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
- 8, // 56: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
- 10, // 57: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
- 12, // 58: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
- 25, // 59: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
- 26, // 60: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
- 27, // 61: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
- 28, // 62: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
- 31, // 63: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
- 1, // 64: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
- 1, // 65: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
- 5, // 66: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
- 54, // 67: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
- 9, // 68: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
- 9, // 69: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
- 54, // 70: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
- 11, // 71: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
- 13, // 72: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
- 15, // 73: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
- 55, // 74: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
- 18, // 75: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
- 56, // 76: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
- 34, // 77: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
- 64, // [64:78] is the sub-list for method output_type
- 50, // [50:64] is the sub-list for method input_type
- 50, // [50:50] is the sub-list for extension type_name
- 50, // [50:50] is the sub-list for extension extendee
- 0, // [0:50] is the sub-list for field type_name
+ 51, // 2: chainguard.platform.registry.SyncConfig.expiration:type_name -> google.protobuf.Timestamp
+ 1, // 3: chainguard.platform.registry.CreateRepoRequest.repo:type_name -> chainguard.platform.registry.Repo
+ 1, // 4: chainguard.platform.registry.RepoList.items:type_name -> chainguard.platform.registry.Repo
+ 52, // 5: chainguard.platform.registry.RepoFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 9, // 6: chainguard.platform.registry.CreateTagRequest.tag:type_name -> chainguard.platform.registry.Tag
+ 51, // 7: chainguard.platform.registry.Tag.last_updated:type_name -> google.protobuf.Timestamp
+ 52, // 8: chainguard.platform.registry.TagFilter.uidp:type_name -> chainguard.platform.common.UIDPFilter
+ 51, // 9: chainguard.platform.registry.TagFilter.updated_since:type_name -> google.protobuf.Timestamp
+ 9, // 10: chainguard.platform.registry.TagList.items:type_name -> chainguard.platform.registry.Tag
+ 51, // 11: chainguard.platform.registry.TagHistoryFilter.start:type_name -> google.protobuf.Timestamp
+ 51, // 12: chainguard.platform.registry.TagHistoryFilter.end:type_name -> google.protobuf.Timestamp
+ 14, // 13: chainguard.platform.registry.TagHistoryList.items:type_name -> chainguard.platform.registry.TagHistory
+ 51, // 14: chainguard.platform.registry.TagHistory.update_timestamp:type_name -> google.protobuf.Timestamp
+ 19, // 15: chainguard.platform.registry.DiffImageResponse.packages:type_name -> chainguard.platform.registry.PackagesDiff
+ 22, // 16: chainguard.platform.registry.DiffImageResponse.vulnerabilities:type_name -> chainguard.platform.registry.VulnerabilitiesDiff
+ 16, // 17: chainguard.platform.registry.DiffImageResponse.config:type_name -> chainguard.platform.registry.ImageConfigDiff
+ 17, // 18: chainguard.platform.registry.ImageConfigDiff.changed:type_name -> chainguard.platform.registry.ChangedImageConfig
+ 35, // 19: chainguard.platform.registry.ChangedImageConfig.changedUser:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedUser
+ 36, // 20: chainguard.platform.registry.ChangedImageConfig.changedWorkingDir:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedWorkingDir
+ 37, // 21: chainguard.platform.registry.ChangedImageConfig.entrypoints:type_name -> chainguard.platform.registry.ChangedImageConfig.EntrypointDiff
+ 38, // 22: chainguard.platform.registry.ChangedImageConfig.envs:type_name -> chainguard.platform.registry.ChangedImageConfig.EnvDiff
+ 39, // 23: chainguard.platform.registry.ChangedImageConfig.cmds:type_name -> chainguard.platform.registry.ChangedImageConfig.CmdDiff
+ 40, // 24: chainguard.platform.registry.ChangedImageConfig.changedStopSignal:type_name -> chainguard.platform.registry.ChangedImageConfig.ChangedStopSignal
+ 42, // 25: chainguard.platform.registry.ChangedImageConfig.volumes:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff
+ 46, // 26: chainguard.platform.registry.ImageConfig.exposed_ports:type_name -> chainguard.platform.registry.ImageConfig.ExposedPortsEntry
+ 48, // 27: chainguard.platform.registry.ImageConfig.volumes:type_name -> chainguard.platform.registry.ImageConfig.VolumesEntry
+ 49, // 28: chainguard.platform.registry.ImageConfig.labels:type_name -> chainguard.platform.registry.ImageConfig.LabelsEntry
+ 21, // 29: chainguard.platform.registry.PackagesDiff.added:type_name -> chainguard.platform.registry.PackageReference
+ 21, // 30: chainguard.platform.registry.PackagesDiff.removed:type_name -> chainguard.platform.registry.PackageReference
+ 50, // 31: chainguard.platform.registry.PackagesDiff.changed:type_name -> chainguard.platform.registry.PackagesDiff.ChangedPackageReference
+ 24, // 32: chainguard.platform.registry.VulnerabilitiesDiff.added:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 24, // 33: chainguard.platform.registry.VulnerabilitiesDiff.removed:type_name -> chainguard.platform.registry.VulnerabilityReference
+ 23, // 34: chainguard.platform.registry.VulnerabilitiesDiff.metadata:type_name -> chainguard.platform.registry.ScannerMetadata
+ 53, // 35: chainguard.platform.registry.ScannerMetadata.scanner:type_name -> chainguard.platform.tenant.Scanner
+ 51, // 36: chainguard.platform.registry.ScannerMetadata.vulnerability_db_last_build_time:type_name -> google.protobuf.Timestamp
+ 29, // 37: chainguard.platform.registry.ManifestMetadataFilterEntry.index_filter:type_name -> chainguard.platform.registry.ManifestMetadataIndexFilter
+ 30, // 38: chainguard.platform.registry.ManifestMetadataFilter.items:type_name -> chainguard.platform.registry.ManifestMetadataFilterEntry
+ 51, // 39: chainguard.platform.registry.PkgMetadata.eol_date:type_name -> google.protobuf.Timestamp
+ 51, // 40: chainguard.platform.registry.PkgMetadata.build_timestamp:type_name -> google.protobuf.Timestamp
+ 32, // 41: chainguard.platform.registry.ManifestMetadata.pkg_metadata:type_name -> chainguard.platform.registry.PkgMetadata
+ 33, // 42: chainguard.platform.registry.ManifestMetadataList.items:type_name -> chainguard.platform.registry.ManifestMetadata
+ 43, // 43: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.added:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry
+ 44, // 44: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.removed:type_name -> chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry
+ 41, // 45: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.AddedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 41, // 46: chainguard.platform.registry.ChangedImageConfig.VolumeDiff.RemovedEntry.value:type_name -> chainguard.platform.registry.ChangedImageConfig.Volume
+ 45, // 47: chainguard.platform.registry.ImageConfig.ExposedPortsEntry.value:type_name -> chainguard.platform.registry.ImageConfig.ExposedPort
+ 47, // 48: chainguard.platform.registry.ImageConfig.VolumesEntry.value:type_name -> chainguard.platform.registry.ImageConfig.Volume
+ 20, // 49: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.current:type_name -> chainguard.platform.registry.VersionReference
+ 20, // 50: chainguard.platform.registry.PackagesDiff.ChangedPackageReference.previous:type_name -> chainguard.platform.registry.VersionReference
+ 3, // 51: chainguard.platform.registry.Registry.CreateRepo:input_type -> chainguard.platform.registry.CreateRepoRequest
+ 1, // 52: chainguard.platform.registry.Registry.UpdateRepo:input_type -> chainguard.platform.registry.Repo
+ 6, // 53: chainguard.platform.registry.Registry.ListRepos:input_type -> chainguard.platform.registry.RepoFilter
+ 4, // 54: chainguard.platform.registry.Registry.DeleteRepo:input_type -> chainguard.platform.registry.DeleteRepoRequest
+ 7, // 55: chainguard.platform.registry.Registry.CreateTag:input_type -> chainguard.platform.registry.CreateTagRequest
+ 9, // 56: chainguard.platform.registry.Registry.UpdateTag:input_type -> chainguard.platform.registry.Tag
+ 8, // 57: chainguard.platform.registry.Registry.DeleteTag:input_type -> chainguard.platform.registry.DeleteTagRequest
+ 10, // 58: chainguard.platform.registry.Registry.ListTags:input_type -> chainguard.platform.registry.TagFilter
+ 12, // 59: chainguard.platform.registry.Registry.ListTagHistory:input_type -> chainguard.platform.registry.TagHistoryFilter
+ 25, // 60: chainguard.platform.registry.Registry.DiffImage:input_type -> chainguard.platform.registry.DiffImageRequest
+ 26, // 61: chainguard.platform.registry.Registry.GetSbom:input_type -> chainguard.platform.registry.SbomRequest
+ 27, // 62: chainguard.platform.registry.Registry.GetImageConfig:input_type -> chainguard.platform.registry.ImageConfigRequest
+ 28, // 63: chainguard.platform.registry.Registry.GetVulnReport:input_type -> chainguard.platform.registry.VulnReportRequest
+ 31, // 64: chainguard.platform.registry.Registry.ListManifestMetadata:input_type -> chainguard.platform.registry.ManifestMetadataFilter
+ 1, // 65: chainguard.platform.registry.Registry.CreateRepo:output_type -> chainguard.platform.registry.Repo
+ 1, // 66: chainguard.platform.registry.Registry.UpdateRepo:output_type -> chainguard.platform.registry.Repo
+ 5, // 67: chainguard.platform.registry.Registry.ListRepos:output_type -> chainguard.platform.registry.RepoList
+ 54, // 68: chainguard.platform.registry.Registry.DeleteRepo:output_type -> google.protobuf.Empty
+ 9, // 69: chainguard.platform.registry.Registry.CreateTag:output_type -> chainguard.platform.registry.Tag
+ 9, // 70: chainguard.platform.registry.Registry.UpdateTag:output_type -> chainguard.platform.registry.Tag
+ 54, // 71: chainguard.platform.registry.Registry.DeleteTag:output_type -> google.protobuf.Empty
+ 11, // 72: chainguard.platform.registry.Registry.ListTags:output_type -> chainguard.platform.registry.TagList
+ 13, // 73: chainguard.platform.registry.Registry.ListTagHistory:output_type -> chainguard.platform.registry.TagHistoryList
+ 15, // 74: chainguard.platform.registry.Registry.DiffImage:output_type -> chainguard.platform.registry.DiffImageResponse
+ 55, // 75: chainguard.platform.registry.Registry.GetSbom:output_type -> chainguard.platform.tenant.Sbom2
+ 18, // 76: chainguard.platform.registry.Registry.GetImageConfig:output_type -> chainguard.platform.registry.ImageConfig
+ 56, // 77: chainguard.platform.registry.Registry.GetVulnReport:output_type -> chainguard.platform.tenant.VulnReport
+ 34, // 78: chainguard.platform.registry.Registry.ListManifestMetadata:output_type -> chainguard.platform.registry.ManifestMetadataList
+ 65, // [65:79] is the sub-list for method output_type
+ 51, // [51:65] is the sub-list for method input_type
+ 51, // [51:51] is the sub-list for extension type_name
+ 51, // [51:51] is the sub-list for extension extendee
+ 0, // [0:51] is the sub-list for field type_name
}
func init() { file_registry_platform_proto_init() }
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index 43f7dc8f..f3ac9395 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -242,6 +242,9 @@ message SyncConfig {
// Controls whether exported tags will be uniquely labeled.
bool unique_tags = 2;
+
+ // When the catalog syncer should stop syncing from the source repository.
+ google.protobuf.Timestamp expiration = 3;
}
message CreateRepoRequest {
From cf1d605c3d893fd505bc820799734632fee59c45 Mon Sep 17 00:00:00 2001
From: Josh Dolitsky <393494+jdolitsky@users.noreply.github.com>
Date: Tue, 7 May 2024 10:28:56 -0500
Subject: [PATCH 39/41] Export edb6c356d926827fb679c7c3111dcbed0de0eba5
Export: edb6c356d926827fb679c7c3111dcbed0de0eba5
---
events/registry/registry.go | 6 +
.../registry/v1/registry.platform.event.go | 21 +
.../registry/v1/registry.platform.pb.go | 1136 +++++++++--------
.../registry/v1/registry.platform.proto | 4 +-
4 files changed, 599 insertions(+), 568 deletions(-)
create mode 100644 proto/platform/registry/v1/registry.platform.event.go
diff --git a/events/registry/registry.go b/events/registry/registry.go
index dc338ac2..ff4519f5 100644
--- a/events/registry/registry.go
+++ b/events/registry/registry.go
@@ -13,6 +13,12 @@ const (
// PushedEventType is the cloudevents event type for registry pushes
PushedEventType = "dev.chainguard.registry.push.v1"
+
+ // RepoCreatedEventType is the cloudevents event type for registry repo created
+ RepoCreatedEventType = "dev.chainguard.api.platform.registry.repo.created.v1"
+
+ // RepoUpdatedEventType is the cloudevents event type for registry repo updated
+ RepoUpdatedEventType = "dev.chainguard.api.platform.registry.repo.updated.v1"
)
// PullEvent describes an item being pulled from the registry.
diff --git a/proto/platform/registry/v1/registry.platform.event.go b/proto/platform/registry/v1/registry.platform.event.go
new file mode 100644
index 00000000..78043833
--- /dev/null
+++ b/proto/platform/registry/v1/registry.platform.event.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2024 Chainguard, Inc.
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v1
+
+// CloudEventsExtension implements chainguard.dev/sdk/events/Extendable.CloudEventsExtension
+func (x *Repo) CloudEventsExtension(key string) (string, bool) {
+ switch key {
+ case "group":
+ return x.GetId(), true
+ default:
+ return "", false
+ }
+}
+
+// CloudEventsSubject implements chainguard.dev/sdk/events/Eventable.CloudEventsSubject.
+func (x *Repo) CloudEventsSubject() string {
+ return x.GetId()
+}
diff --git a/proto/platform/registry/v1/registry.platform.pb.go b/proto/platform/registry/v1/registry.platform.pb.go
index a700c2c9..fc59a93b 100644
--- a/proto/platform/registry/v1/registry.platform.pb.go
+++ b/proto/platform/registry/v1/registry.platform.pb.go
@@ -95,7 +95,9 @@ type Repo struct {
Readme string `protobuf:"bytes,5,opt,name=readme,proto3" json:"readme,omitempty"`
// (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
// NOTE: This property can only be set by Chainguard.
- SyncConfig *SyncConfig `protobuf:"bytes,6,opt,name=sync_config,json=syncConfig,proto3" json:"sync_config,omitempty"`
+ // Note: the json_name defaults to "syncConfig" which causes our eventing
+ // system to not work properly (since the protobuf name is "sync_config")
+ SyncConfig *SyncConfig `protobuf:"bytes,6,opt,name=sync_config,proto3" json:"sync_config,omitempty"`
}
func (x *Repo) Reset() {
@@ -2893,7 +2895,7 @@ var file_registry_platform_proto_rawDesc = []byte{
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x76,
0x75, 0x6c, 0x6e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x13, 0x73, 0x62, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f,
+ 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f,
0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0c,
@@ -2904,605 +2906,605 @@ var file_registry_platform_proto_rawDesc = []byte{
0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75,
0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e,
0x64, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x0b,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b,
0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x73, 0x79, 0x6e,
- 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f,
- 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73, 0x12,
- 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b, 0x0a,
- 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
- 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
- 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a,
- 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x68,
- 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70,
- 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
- 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
- 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54, 0x61,
- 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75,
- 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63, 0x68,
- 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x05,
- 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
- 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
- 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22,
- 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
- 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
- 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xa1,
- 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69,
- 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0f,
- 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
- 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03,
- 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x73, 0x79, 0x6e,
+ 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e,
+ 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, 0x61, 0x67, 0x73,
+ 0x12, 0x3a, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x11,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2b,
+ 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x52,
+ 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
+ 0x73, 0x22, 0x6c, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
+ 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72,
- 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65, 0x6e,
- 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66, 0x66,
- 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a,
- 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e,
- 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x63,
- 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64, 0x44,
- 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x06,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22,
+ 0x68, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65,
+ 0x70, 0x6f, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2a, 0x0a, 0x10, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67,
+ 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x09, 0x54,
+ 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04,
+ 0x75, 0x69, 0x64, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65,
+ 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x70, 0x6f, 0x63,
+ 0x68, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x64, 0x22, 0x42, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52,
+ 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x09, 0x70,
+ 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64,
+ 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64,
+ 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
+ 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
+ 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
+ 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65,
+ 0x6d, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
+ 0x12, 0x45, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22,
+ 0xa1, 0x02, 0x0a, 0x11, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44,
+ 0x69, 0x66, 0x66, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x5b, 0x0a,
+ 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65,
+ 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, 0x08,
+ 0x03, 0x10, 0x04, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x22, 0x84, 0x0c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0b, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74,
- 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
- 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x57, 0x6f,
+ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x61, 0x0a, 0x0b, 0x65,
+ 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x66,
+ 0x66, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c,
+ 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
- 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65,
- 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
- 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
- 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f,
- 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x12,
- 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
- 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a,
- 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64,
- 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12,
- 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65,
- 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a,
- 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x5c,
- 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
- 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65, 0x64,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x07,
- 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
+ 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
+ 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x4c, 0x0a, 0x04,
+ 0x63, 0x6d, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+ 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x64,
+ 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x63, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53,
+ 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x55, 0x0a, 0x07,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
- 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
- 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43,
- 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d, 0x61,
- 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x0d,
- 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45,
- 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10,
- 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76,
- 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74,
- 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63,
- 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f, 0x6c,
- 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
- 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
- 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
- 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69, 0x67,
- 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x53,
- 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
- 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50,
- 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72,
- 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a, 0x06,
- 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x73,
+ 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x49, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a,
+ 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69,
+ 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76, 0x69,
+ 0x6f, 0x75, 0x73, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72,
+ 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x44, 0x69, 0x66, 0x66,
+ 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x1a, 0x39, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x61,
+ 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65,
+ 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x1a, 0x49, 0x0a, 0x11, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c,
+ 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
+ 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
+ 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
+ 0x1a, 0xb6, 0x03, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12,
+ 0x5c, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x41, 0x64, 0x64, 0x65,
+ 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x62, 0x0a,
+ 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x1a, 0x71, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66,
- 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50,
- 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a, 0xc3,
- 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
- 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48,
- 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
- 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
- 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
- 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65,
- 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69,
- 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x61,
- 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18,
- 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69,
- 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe4, 0x05, 0x0a, 0x0b, 0x49, 0x6d,
+ 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
+ 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x60, 0x0a,
+ 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12,
+ 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e,
+ 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e,
+ 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03,
+ 0x63, 0x6d, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
+ 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b,
+ 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
+ 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
- 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x73,
- 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65,
- 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76, 0x75,
- 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f, 0x6c,
- 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44,
- 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45,
- 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
- 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61,
- 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69, 0x66,
- 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
- 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f,
- 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x0b,
- 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
- 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
- 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
- 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c,
+ 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x69,
+ 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70,
+ 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x1a, 0x0d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65,
+ 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64,
+ 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f,
+ 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x08, 0x0a,
+ 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x22, 0xc2, 0x03, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66,
+ 0x66, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76,
+ 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x12, 0x5c, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x1a,
+ 0xc3, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x48, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x65,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68,
+ 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
+ 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65,
+ 0x76, 0x69, 0x6f, 0x75, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+ 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x64,
+ 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62,
+ 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05,
+ 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c,
+ 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x22, 0x93, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x07,
+ 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x6e,
+ 0x65, 0x72, 0x52, 0x07, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x20, 0x76,
+ 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x62, 0x5f,
+ 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x44, 0x62, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x45, 0x0a, 0x1f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+ 0x5f, 0x64, 0x62, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x62, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x16, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72,
+ 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
+ 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a,
+ 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x10, 0x44, 0x69,
+ 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
+ 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a,
+ 0x0b, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07,
0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
- 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68,
- 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
- 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
+ 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
+ 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
+ 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
+ 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63,
+ 0x68, 0x22, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x23, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
+ 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65,
+ 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72,
+ 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05,
+ 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
- 0x8a, 0x01, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x07, 0x72, 0x65,
- 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8,
- 0xd2, 0x05, 0x01, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x61,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65,
+ 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01,
+ 0x0a, 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
+ 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72,
+ 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75,
+ 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69,
+ 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18,
+ 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06,
+ 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69,
+ 0x67, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
- 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xd8, 0x01, 0x0a,
- 0x0b, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04,
- 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c,
- 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x72, 0x6c, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x50, 0x75, 0x72,
- 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6f, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x07, 0x65, 0x6f, 0x6c, 0x44, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x62,
- 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a,
- 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x10, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64,
- 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67,
- 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74,
+ 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x69, 0x74, 0x65,
- 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a,
- 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x0b,
- 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46,
- 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52,
- 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10, 0x03,
- 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4, 0x01,
- 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
+ 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
+ 0x2a, 0x3f, 0x0a, 0x0b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x54, 0x69, 0x65, 0x72, 0x12,
+ 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
+ 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41,
+ 0x52, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x55, 0x4d, 0x10,
+ 0x03, 0x32, 0xe1, 0x14, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe4,
+ 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70,
- 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70, 0x6f,
- 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
- 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d,
- 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c, 0xc2,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65,
+ 0x70, 0x6f, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x04, 0x72, 0x65, 0x70,
+ 0x6f, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc3, 0x0c,
+ 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70,
+ 0x6f, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2,
0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f,
- 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
- 0x75, 0x70, 0x18, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x76, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x1a, 0x1a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xc4, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f,
- 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c,
- 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x8a,
- 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca, 0x01,
- 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e, 0x63,
+ 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x18, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70,
+ 0x6f, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
- 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65, 0x76,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f,
+ 0x4c, 0x69, 0x73, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
+ 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xc5, 0x0c, 0x10, 0x01, 0x12, 0xca,
+ 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x2f, 0x2e,
+ 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
+ 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a,
+ 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
+ 0x6f, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
+ 0x12, 0x04, 0x0a, 0x02, 0xc6, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3f, 0x0a, 0x34, 0x64, 0x65,
+ 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
+ 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
+ 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3,
+ 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76,
0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x2e, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76,
- 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xdb, 0x01, 0x0a, 0x09, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61,
- 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x7b, 0x82, 0xd3, 0xe4,
- 0x93, 0x02, 0x25, 0x3a, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcb, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e,
- 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70,
+ 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
+ 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e,
+ 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61,
+ 0x67, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
- 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x1b, 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2,
+ 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33,
+ 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61,
+ 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a,
+ 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x22, 0x74, 0x82, 0xd3,
- 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a,
- 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcc, 0x0c, 0xc2, 0xf0,
- 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x01, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67,
- 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
- 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b,
- 0x2a, 0x19, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
- 0x06, 0x12, 0x04, 0x0a, 0x02, 0xce, 0x0c, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x3e, 0x0a, 0x33, 0x64,
- 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70,
- 0x69, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e,
- 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x08,
- 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70,
- 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
- 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
- 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74,
- 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c, 0x10,
- 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69, 0x73,
- 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd, 0x0c,
- 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2e,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x69,
- 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6, 0x01,
- 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
- 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e,
- 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12,
- 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
- 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06,
- 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6d,
- 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e,
- 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f,
- 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x3d,
- 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01, 0x0a,
- 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x75,
- 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75, 0x6c,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12,
- 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
+ 0x79, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+ 0x13, 0x12, 0x11, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f,
+ 0x74, 0x61, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0xcd, 0x0c,
+ 0x10, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x48, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c,
+ 0x69, 0x73, 0x74, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x7b,
+ 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x68, 0x69,
+ 0x73, 0x74, 0x6f, 0x72, 0x79, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0xcd,
+ 0x0c, 0x12, 0xaa, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12,
+ 0x2e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44,
+ 0x69, 0x66, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x8a, 0xaf,
+ 0xa8, 0xd2, 0x05, 0x0a, 0x12, 0x08, 0x0a, 0x06, 0xc5, 0x0c, 0x94, 0x05, 0x8a, 0x05, 0x12, 0xa6,
+ 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x62, 0x6f, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61,
+ 0x6e, 0x74, 0x2e, 0x53, 0x62, 0x6f, 0x6d, 0x32, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39,
+ 0x12, 0x37, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x73, 0x62, 0x6f, 0x6d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12,
+ 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x8a, 0x05, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49,
+ 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12,
+ 0x3e, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d,
0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
- 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a, 0xaf,
- 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01, 0x0a,
- 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
- 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x22,
- 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
- 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x42,
- 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
- 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x3d, 0x2a, 0x7d, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0xcf, 0x0c, 0x12, 0xbd, 0x01,
+ 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12,
+ 0x2f, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
+ 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56,
+ 0x75, 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x75,
+ 0x6c, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f,
+ 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a,
+ 0x7d, 0x2f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x67, 0x65, 0x73,
+ 0x74, 0x3d, 0x2a, 0x7d, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x8a,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x04, 0xc5, 0x0c, 0x94, 0x05, 0x12, 0xc5, 0x01,
+ 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x63,
+ 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
+ 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4d, 0x61, 0x6e, 0x69,
+ 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74,
+ 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65,
+ 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x6d, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12,
+ 0x04, 0x0a, 0x02, 0xcf, 0x0c, 0x42, 0x71, 0x0a, 0x27, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
+ 0x42, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/proto/platform/registry/v1/registry.platform.proto b/proto/platform/registry/v1/registry.platform.proto
index f3ac9395..6a072f7a 100644
--- a/proto/platform/registry/v1/registry.platform.proto
+++ b/proto/platform/registry/v1/registry.platform.proto
@@ -226,7 +226,9 @@ message Repo {
// (optional) Repository sync configuration. If enabled, images are synced from the source to this repo.
// NOTE: This property can only be set by Chainguard.
- SyncConfig sync_config = 6;
+ // Note: the json_name defaults to "syncConfig" which causes our eventing
+ // system to not work properly (since the protobuf name is "sync_config")
+ SyncConfig sync_config = 6 [json_name="sync_config"];
}
enum CatalogTier {
From c5355edcaa11d0c0ab38489769930cd726a8166e Mon Sep 17 00:00:00 2001
From: Jenny Shi
Date: Thu, 9 May 2024 16:02:59 -0400
Subject: [PATCH 40/41] Export ef3a849d451e346a2e99dc7eb3a81657c631c147
Export: ef3a849d451e346a2e99dc7eb3a81657c631c147
---
.../iam/v1/role_binding.platform.pb.go | 158 ++++++++++--------
.../iam/v1/role_binding.platform.proto | 4 +-
2 files changed, 88 insertions(+), 74 deletions(-)
diff --git a/proto/platform/iam/v1/role_binding.platform.pb.go b/proto/platform/iam/v1/role_binding.platform.pb.go
index a0d6b4da..ef46feb5 100644
--- a/proto/platform/iam/v1/role_binding.platform.pb.go
+++ b/proto/platform/iam/v1/role_binding.platform.pb.go
@@ -326,7 +326,7 @@ type RoleBindingList_Binding struct {
Identity string `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"`
// role of the bound identity.
Role *Role `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
- // email of the bound identity.
+ // verified email of the bound identity.
Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
// ClaimMatch issuer of the bound identity.
ClaimMatchIssuer string `protobuf:"bytes,6,opt,name=claim_match_issuer,json=claimMatchIssuer,proto3" json:"claim_match_issuer,omitempty"`
@@ -334,6 +334,8 @@ type RoleBindingList_Binding struct {
ClaimMatchSubject string `protobuf:"bytes,7,opt,name=claim_match_subject,json=claimMatchSubject,proto3" json:"claim_match_subject,omitempty"`
// created_at is the timestamp for when the role binding was created.
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // unverified email of the bound identity.
+ EmailUnverified string `protobuf:"bytes,9,opt,name=email_unverified,json=emailUnverified,proto3" json:"email_unverified,omitempty"`
}
func (x *RoleBindingList_Binding) Reset() {
@@ -424,6 +426,13 @@ func (x *RoleBindingList_Binding) GetCreatedAt() *timestamppb.Timestamp {
return nil
}
+func (x *RoleBindingList_Binding) GetEmailUnverified() string {
+ if x != nil {
+ return x.EmailUnverified
+ }
+ return ""
+}
+
var File_role_binding_platform_proto protoreflect.FileDescriptor
var file_role_binding_platform_proto_rawDesc = []byte{
@@ -451,13 +460,13 @@ var file_role_binding_platform_proto_rawDesc = []byte{
0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72,
0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67,
0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xa9, 0x03, 0x0a, 0x0f, 0x52, 0x6f, 0x6c,
+ 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xd4, 0x03, 0x0a, 0x0f, 0x52, 0x6f, 0x6c,
0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x05,
0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68,
0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x69,
- 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xcd, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xf8, 0x02, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x12, 0x34, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1e, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61,
@@ -478,81 +487,84 @@ var file_role_binding_platform_proto_rawDesc = []byte{
0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64,
- 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
- 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
- 0x04, 0x75, 0x69, 0x64, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0b,
- 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x32, 0x0a, 0x18, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x06, 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32,
- 0x93, 0x06, 0x0a, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x12, 0xe5, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68,
- 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
- 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24,
- 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
- 0x64, 0x69, 0x6e, 0x67, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x0c, 0x72,
- 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8,
- 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a,
- 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
- 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12,
- 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x65, 0x64, 0x41, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x6e,
+ 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
+ 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22,
+ 0x5f, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x55, 0x49, 0x44, 0x50, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x04, 0x75, 0x69, 0x64, 0x70,
+ 0x22, 0x83, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a,
+ 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0x90,
+ 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a,
+ 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
- 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
+ 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x42,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x32, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06,
+ 0x90, 0xaf, 0xa8, 0xd2, 0x05, 0x01, 0x52, 0x02, 0x69, 0x64, 0x32, 0x93, 0x06, 0x0a, 0x0c, 0x52,
+ 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x06,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75,
+ 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69,
0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22,
- 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
- 0x0a, 0x02, 0x92, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e,
+ 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x62,
+ 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f,
+ 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x70, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04,
+ 0x0a, 0x02, 0x91, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e,
0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69,
0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
- 0x70, 0x18, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63,
- 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
- 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69,
- 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69,
- 0x73, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x69, 0x61, 0x6d,
- 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
- 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03, 0x10, 0x01, 0x12, 0xc4,
- 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
- 0x69, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
- 0x6d, 0x70, 0x74, 0x79, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x69,
- 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06,
- 0x12, 0x04, 0x0a, 0x02, 0x94, 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65,
- 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69,
- 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
- 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x18, 0x01, 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
- 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74,
- 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61,
- 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69,
- 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61,
- 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75,
+ 0x70, 0x18, 0x01, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24,
+ 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74,
+ 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52,
+ 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93,
+ 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x1a, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d,
+ 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x92, 0x03, 0xc2,
+ 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x72, 0x6f,
+ 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x12, 0x88,
+ 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61,
+ 0x6d, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x1a, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64,
+ 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x52, 0x6f,
+ 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x82,
+ 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x72,
+ 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x8a, 0xaf, 0xa8, 0xd2, 0x05,
+ 0x08, 0x12, 0x06, 0x0a, 0x02, 0x93, 0x03, 0x10, 0x01, 0x12, 0xc4, 0x01, 0x0a, 0x06, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
+ 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31,
+ 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69,
+ 0x64, 0x3d, 0x2a, 0x2a, 0x7d, 0x8a, 0xaf, 0xa8, 0xd2, 0x05, 0x06, 0x12, 0x04, 0x0a, 0x02, 0x94,
+ 0x03, 0xc2, 0xf0, 0x8e, 0xfc, 0x0b, 0x39, 0x0a, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61,
+ 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x69, 0x61, 0x6d, 0x2e,
+ 0x72, 0x6f, 0x6c, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x12, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
+ 0x42, 0x6d, 0x0a, 0x22, 0x64, 0x65, 0x76, 0x2e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61,
+ 0x72, 0x64, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
+ 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x1b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
+ 0x49, 0x41, 0x4d, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x62,
+ 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
diff --git a/proto/platform/iam/v1/role_binding.platform.proto b/proto/platform/iam/v1/role_binding.platform.proto
index 1041b77f..3c683999 100644
--- a/proto/platform/iam/v1/role_binding.platform.proto
+++ b/proto/platform/iam/v1/role_binding.platform.proto
@@ -102,7 +102,7 @@ message RoleBindingList {
string identity = 3;
// role of the bound identity.
chainguard.platform.iam.Role role = 4;
- // email of the bound identity.
+ // verified email of the bound identity.
string email = 5;
// ClaimMatch issuer of the bound identity.
string claim_match_issuer = 6;
@@ -110,6 +110,8 @@ message RoleBindingList {
string claim_match_subject = 7;
// created_at is the timestamp for when the role binding was created.
google.protobuf.Timestamp created_at = 8;
+ // unverified email of the bound identity.
+ string email_unverified = 9;
}
repeated Binding items = 1;
}
From e877740e868e96af5ca16341a806106d059c0fb2 Mon Sep 17 00:00:00 2001
From: Kenny Leung
Date: Fri, 10 May 2024 09:26:10 -0700
Subject: [PATCH 41/41] Export 22b45eb376aeacebc98b6371d79d64c40a5355d1
Export: 22b45eb376aeacebc98b6371d79d64c40a5355d1
---
go.mod | 10 +++++-----
go.sum | 26 ++++++++++++++------------
2 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/go.mod b/go.mod
index 01999ae3..f032553a 100644
--- a/go.mod
+++ b/go.mod
@@ -18,11 +18,11 @@ require (
github.com/russross/blackfriday/v2 v2.1.0
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
- golang.org/x/oauth2 v0.19.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c
+ golang.org/x/oauth2 v0.20.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6
google.golang.org/grpc v1.63.2
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
- google.golang.org/protobuf v1.33.0
+ google.golang.org/protobuf v1.34.1
k8s.io/apimachinery v0.29.1
)
@@ -62,8 +62,8 @@ require (
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
- golang.org/x/tools v0.19.0 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect
+ golang.org/x/tools v0.20.0 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 3d01b98d..06e2b5ca 100644
--- a/go.sum
+++ b/go.sum
@@ -177,8 +177,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
-golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -195,8 +195,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
-golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
+golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
+golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -204,6 +204,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -246,8 +248,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
-golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
+golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY=
+golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -257,10 +259,10 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6 h1:DTJM0R8LECCgFeUwApvcEJHz85HLagW8uRENYxHh1ww=
+google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6/go.mod h1:10yRODfgim2/T8csjQsMPgZOMvtytXKTDRzH6HRGzRw=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 h1:DujSIu+2tC9Ht0aPNA7jgj23Iq8Ewi5sgkQ++wdvonE=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
@@ -271,8 +273,8 @@ google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
+google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=